Seit längerer Zeit ist jetzt PHP5 verfügbar, aber von Anfang an gab es bei der Umstellung von PHP4 auf PHP5 Probleme. Insbesondere das Einspielen eines neuen Updates ist momentan ein Spiel mit dem Feuer und mal wieder musste ich heute ein Update rückgängig machen, da viele Anwendungen nicht mehr richtig funktionierten ... Das Hauptproblem ist anscheinend eine Änderung in der Implementierung der Funktion array_splice() durch den in PHP 5.0.5 gefixten Bug #33257 [1].
Diese Änderung führt nun in einigen PHP-Anwendungen zu dem Fehler "Fatal error: Only variables can be passed by reference in ...". Beispielsweise beim Aufruf von array_pop(foo()) - das war bisher erlaubt, wenn foo() ein array zurück gab. Nun führt es zu einer Fehlermeldung.
Natürlich kann man das durch ein einfaches Zwischenspeichern des Ergebnis von foo() in einer Variable ($a = foo()) und dem nachfolgenden Aufruf von array_pop() mit dieser Variable (array_php($a)) umgehen, aber das bedeutet halt, dass man alle Programme die diesen Fehler machen (manuell) ändern muss.
Betroffen sind bei mir mindestens squirrelmail 1.4.5 und Geeklog 1.3.11.
Externe Beschreibungen und Informationen zu diesem Fehler findet man auf [2] und [3]. Ich für meinen Teil bleibe nun erstmal bei PHP 5.0.4, bis es entweder einen Workaround gibt oder ich alle PHP-Skripte auf meinem Server diesbezüglich untersucht habe ...
[1] http://bugs.php.net/bug.php?id=33257
[2] http://www.webmasterworld.com/forum88/9972.htm
[3] http://bugs.php.net/bug.php?id=33643
