Migration zu PHP 5.3

17. Juli 2012 um 14:10 Uhr von Wolfgang Stengel zu PHP
Heute habe ich einen unserer Entwicklungsserver von PHP 5.2 auf 5.3 aufgerüstet. Eigentlich kein großes Problem, es wurde auch schon an anderen Stellen viel darüber geschrieben. Lösungen zu den häufigsten Stolpersteinen helfen vielleicht doch dem Einen oder Anderen:
  • Wer PHP 5.3 erstmal testen möchte: Beim ./configure kann mit den Parametern --with-config-file-path und --with-config-file-scan-dir eine separate Konfiguration angegeben werden, unter Linux z.B. /etc/php5.3/php.ini bzw. /etc/php5.3/conf.d. Verzichtet man dann nach make auf make install und kopiert nur das Modul in den Webserver, kann man sich erstmal ein wenig umsehen und frei in /etc/php5.3 konfigurieren. Sollte es nicht klappen kann schnell wieder auf die alte PHP-Version mit der alten Konfiguration zurückgeschaltet werden.
  • Neuer Error-Level E_DEPRECATED: Wer an vielen Stellen seiner Projekte eins oder merere der ab PHP 5.3 Deprecated Features verwendet sollte im Error Reporting in der php.ini erstmal den neuen Error Level E_DEPRECATED ausnehmen, da sonst das Projekt mit Fehlermeldungen überquillt. Gern gesehene Kandidaten hierfür sind z.B. ereg() oder session_register(). Abgeschaltet werden kann die Warnung mit z.B. der Direktive error_reporting = E_ALL & ~E_DEPRECATED in der php.ini.
  • Zwang zur Zeitzone: Wird die Zeitzone nicht explizit angegeben werfen die Datumsfunktionen eine Warnung aus. Schnell beheben lässt sich das mit der php.ini-Direktive date.timezone. Folgende Angabe löst das Problem z.B. für Deutschland: date.timezone = Europe/Berlin.
  • Neue reservierte Begriffe: Wer goto oder namespace als Funktions-, Klassen- oder Methodenname verwendet muss sich etwas Neues ausdenken. Diese Begriffe sind jetzt für die gleichnamigen neuen Features in PHP 5.3 reserviert und führen im falschen Kontext zu "fatal errors". Ein Beispiel hierfür ist der Code des MediaWiki, welcher eine Klasse Namespace deklariert und benutzt. Umbenennen der Klasse und Austauschen der entsprechenden Aufrufe ist jedoch relativ leicht möglich.
Eine komplette Liste der Änderungen gibt es auf php.net.
PHP Wolfgang Stengel