[ERROR][PHP] Warning: date(): It is not safe to rely on the system's timezone settings.

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:

 

 
dotproject 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/Helsinki' for 
'EEST/3.0/DST' instead in .....
 

 

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:

 

 
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Warsaw
; http://php.net/date.default-latitude
;date.default_latitude = 31.7667
; http://php.net/date.default-longitude
;date.default_longitude = 35.2333
; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333
; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333
...
 

 

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.

 

 
date_default_timezone_set('Europe/Warsaw');
 
 

 

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ą:

 

 
php value date.timezone "Europe/Warsaw" 
 
 

 

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:

 
if (defined('E_DEPRECATED')) {
        error_reporting(E_ALL & ~(E_DEPRECATED|E_NOTICE));
} else {
        error_reporting(E_ALL & ~E_NOTICE);
}  
 
 

 

Wersja po modyfikacji:

 
if (defined('E_DEPRECATED')) {
        error_reporting(E_ALL & ~(E_DEPRECATED|E_NOTICE|E_STRICT));
} else {
        error_reporting(E_ALL & ~E_NOTICE);
}  
 
 

 

 Po wprowadzeniu zmian ostrzeżenia przestaną być wyświetlane.

 

 

Dodaj komentarz

Kod antyspamowy
Odśwież



Twój koszyk jest pusty

Odsłony:
635985
Wszelkie prawa zastrzeżone. Copyright © 2009 - 2024 Maciej Kaleta