Home > Ajax, Open Source, php > Mindeständerungen für Umstieg auf php 5.3.x

Mindeständerungen für Umstieg auf php 5.3.x

Wir stehen, wie sicher viele wissen, vor der Verbreitung des nächsten größeren php-Releases:

php 5.3 is coming

Normalerweise kein Grund zur Panik, aber wir sollten vorbereitet sein. Da ändert sich nämlich einiges, das sich ohne Änderung der bestehenden Applikationen durch üble Fehlermeldungen bemerkbar macht ;-)

Man bekommt dann so nette Warnungen eingeblendet wie

PHP Warning:  date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CET/1.0/no DST’ instead in …

oder auch

Deprecated: Assigning the return value of new by reference is deprecated in …/xajax/xajax_core/xajax.inc.php on line 360

Xajax funktioniert dann natürlich nicht mehr …

Was müssen wir also bald tun ?

Alle unsere Applikationen mit voll “aufgedrehtem” Error-Logging überprüfen und fit machen für eine Zukunft mit php 5.3 …

Müssen wir das gleich tun ?

Nein Gott sei Dank nicht ;-) . Wir müssen nicht in operative Hektik verfallen.

  1. php 5.3 ist derzeit noch (!) die Ausnahme
  2. Wir können unsere Applikation(en) durch Änderungen in der php.ini, und/oder auch kleine Änderungen in der Applikation selbst, ohne diese nervigen Fehlermeldungen wieder ordnungsgemäß zum Laufen bringen.

Wie das geht beschreibe ich im Folgenden, ohne Anspruch auf Vollständigkeit …

Was müssen wir jetzt wirklich tun ?

Haben wir einen Server mit php 5.3, so ist es sehr sinnvoll die oben angesprochenen Änderungen in der php.ini durchzuführen. Tun wir das nicht, müssen wir z.B. phpMyAdmin und ähnliche wichtige Tools durch Code-Änderungen reparieren …

Wir ändern also in der php.ini folgende Zeile :

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

Damit werden solche Deprecated-Meldungen ausgeknipst. (diese E_DEPRECATED-Einstellung gibt es erst seid 5.3…)

Eigentlich sollte die php.ini-Zeile

date.timezone = “Europe/Berlin”

diese date-Warnung (s. oben) zum Verschwinden bringen. Leider habe ich das nicht hinbekommen. Wurde schlicht ignoriert … Warum ? Keine Ahnung ;-)

Also ändern wir den Code unserer Applikationen, um diese Einstellung dort vorzunehmen. Als vorsichtiges Kerlchen ;-) setze ich dabei auch gleich das error_reporting entsprechend. Dann muss ich mir keine weiteren Gedeanken bezüglich der php.ini’s der verschiedenen Server mehr machen …

Ich habe jetzt in alle meine selbstgeschriebenen Applikationen folgendes Code-Stück eingefügt (in ein zentrales php-Script, das bei jedem Seitenaufruf durchlaufen wird) :

if (strnatcmp(phpversion(),’5.3.0′) >= 0)
{
$php = “5.3″; // or higher
}
else
{
$php = “5.2″; // or lower
}

if($php == “5.2″) {
error_reporting(E_ALL ^ E_NOTICE);
} else {
// we need that for php 5.3 !!!
error_reporting (E_ALL & ~E_DEPRECATED & ~E_NOTICE);
date_default_timezone_set(‘Europe/Berlin’);
}

Damit funktioniert wieder alles, wie vorher. Nun habe ich Zeit um abzuwarten, dass von mir verwendete Bibliotheken wie Xajax 5.3-fähig werden, und/oder aber kann meinen eigenen Code ohne Zeitdruck auf php 5.3 umstellen …

Ich hoffe diese Info ist für den eine oder anderen nützlich und erspart ihm etwas gegoogle ;-)

Update 27.1.2010

Im PHP-Magazin habe ich noch den Link auf ein GPL-Migrations-Script gefunden, das vorhandenen Code (Einzelfiles, Ordner) auf Kompatibilität prüft:

http://it-republik.de/php/news/Migration-nach-PHP-5.3-&ndash%3B-aber-richtig-053543.html

oder direkt

http://devzone.zend.com/article/11701-5.2-to-5.3-migration

Geholt habe ich es schon, aber leider noch nicht die Zeit zum Ausprobieren gefunden. Wäre dankbar für Erfahrungsberichte in einem oder mehreren Kommentaren :-)

admin Ajax, Open Source, php , ,

  1. 23. April 2010, 12:56 | #1

    date.timezone = ‘Europe/Berlin’
    funktionier eigentlich in der php.ini. Also bei uns waren die Hinweise dann weg. Vielleicht wurde vergessen den Apache neu zu starten?

    Ja bei mir inzwischen auch. Apache vergesse ich eigentlich nie neu zu starten, but who knows ;-) . Schlechtes Karma an diesem Tag, oder bereinigt durch einen php-Upgrade, von denen ich jetzt bereits einige hatte. Hab es nicht wirklich beobachtet …

    Danke für den Hinweis jedenfalls !!!

    Herzliche Grüße

    Toni

  2. Till
    17. Februar 2011, 20:43 | #2

    Hallo,

    super zulesen das auch andere Programmierer Xajax zuschätzen wissen :) Ein wirklich sehr sehr gutes ajax-Framework das wie ich finde sehr unterschätz wird bzw. zu unrecht nicht so populär ist.

    gruß
    till

  3. 17. Februar 2011, 21:20 | #3

    Hi Till,

    das sehe ich ganz genau so :-) !

    Gruß

    Toni

  1. Bisher keine Trackbacks