Willkommen bei Christophs Weblog
05.02.2012, 15:23 Uhr

Stress mit PHP 5

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
Stress mit PHP 5 | 1 Kommentar(e) | Neuen Account anlegen
Die folgenden Kommentare geben Meinungen von Lesern wieder und entsprechen nicht notwendigerweise der Meinung der Betreiber dieser Site. Die Betreiber behalten sich die Löschung von Kommentaren vor.
Stress mit PHP 5
Autor: chris am 03.10.2005, 00:22 Uhr
Ein Kommentar[1] auf bugs.gentoo.org:

"PHP 5.0.5 is supposed to be minor bugfix release for god's sake and this change DOES break existing programs as masse AND can not make any formally invalid program correct - hardly a "bugfix" to me."

Die Antwort eines Entwicklers darauf:

"We know, that's exactly why we still provide 5.0.4, and 4.3.11. 4.4.0 and 5.0.5 broke much PHP applications, 5.0.6 will another time change stuff, but upstreams answer is "Fix your scripts! We do not care, the fix on our part was needed!",

Aber wenigstens wird 5.0.4 anscheinend solange weitergepflegt, bis dieses Problem irgendwie gelöst ist.

[1] http://bugs.gentoo.org/show_bug.cgi?id=106799
[ # ]