Aktualizacje wersji oprogramowania najczęściej przynoszą spore korzyści, jednak w niektórych przypadkach powodują problemy często wynikające z faktu niedostosowania innych elementów do pracy z nowszymi wersjami pakietów składowych.
Problem taki pojawił się właśnie po aktualizacji PHP z wersji 5.2.9 na 5.3.x. Niektóre skrypty zaczęły zgłaszać ostrzeżenia:
Problem ujawnił się na stronach internetowych korzystających z WordPress'a, oraz w CRM DotProject.
Rozwiązaniem jest edycja pliku php.ini, oraz konfiguracja parametru date.timezone odpowiadającego za domyślną strefę czasową, która standardowo jest zakomentowana. Uzupełniamy parametr o właściwą dla nas strefę czasową. W przypadku Polski będzie to date.timezone = Europe/Warsaw, a całość powinna wyglądać jak poniżej:
W przypadku gdy nie mamy możliwości edycji pliku php.ini (lub też zmiany w konfiguracji globalnej PHP nie przynoszą rezultatu) możemy podobny efekt uzyskać dodając na początku skryptu następujący fragment kodu ustawiający właściwą strefę czasową. W przypadku dotProject'a będą to pliki index.php lub base.php.
Warto również sprawdzić, czy skrypt nie posiada pliku .htaccess który nadpisywałby ustawienia z pliku php.ini. Jeżeli taki plik istnieje to w nim należy zmienić ustawienia, lub też dodać bezpośrednie wymuszenie konfiguracji następującą linią:
Listę stref czasowych znaleźć możemy pod linkiem: http://us3.php.net/manual/en/timezones.php
Aktualizacja:
Problem występujących ostrzeżeń powrócił w chwili aktualizacji PHP do wersji 5.5.9 pomimo zastosowanych wcześniej ustawień. W sieci znaleźć można informację, iż sytuacja taka spowodowana jest dosyć restrykcyjną polityką ostrzeżeń. Zostało to zmienione w aktualizacji z dnia 20 czerwca 2012 roku. Wprowadzała ona zmianę w pliku base.php która modyfikowała poniższy fragment:
Wersja oryginalna:
Wersja po modyfikacji:
Po wprowadzeniu zmian ostrzeżenia przestaną być wyświetlane.