БлогNot. Сообщение об ошибке date.timezone в PHP последних версий

Сообщение об ошибке date.timezone в PHP последних версий

Маленький ответ на маленький вопрос. PHP последних версий довольно строг в отношении вывода сообщений об ошибках и предупреждений, скорее всего, в Вашем файле настроек стоит

error_reporting = E_ALL & ~E_DEPRECATED

Это, в частности, означает, что вывод предупреждений (Warnings, директива E_WARNING) не подавлен, поэтому при ненастроенном "часовом поясе по умолчанию" каждый вызов функции date(...), в котором не подавлен вывод ошибок (@date(...)), да и другие собщения об ошибках будут сопровождаться предупреждением вида

Warning: Unknown: 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 'UTC' for '6.0/no DST' instead in 
[ИМЯ_ФАЙЛА] on line [НОМЕР_СТРОКИ]

Просто поставьте в активном файле php.ini настройку date.timezone в секции [DATE], например:

[Date]
date.timezone = "Europe/Moscow"

или просто

[Date]
date.timezone = 6

для часового пояса GMT+6 - если лень искать в списках свой город. - не надо так делать, всё-таки значение зоны из спецификации; а вот без кавычек можно:

[Date]
date.timezone = Europe/Moscow

 Список допустимых временных зон PHP

Узнать, откуда подключён файл настроек php.ini, можно, выполнив это:

<?php phpinfo(); ?>

Ответ содержится в первой таблице в строке Loaded Configuration File

Начиная с PHP 5.1.0 можно установить временную зону по умолчанию для всех функций скрипта и без правки файла php.ini - для этого достаточно вызвать метод date_default_timezone_set с параметром-идентификатором временной зоны (см. ссылку выше).

Например, для Новосибирска делаем так:

date_default_timezone_set ('Asia/Novosibirsk');

Ещё лучше предусмотреть в скрипте соответствующую настройку.

Ещё я делаю так где-нибудь в начале скрипта (лучше всего в коде, выполняющемся 1 раз):

@date_default_timezone_set (date_default_timezone_get()); 
  //Чтоб дальше не ругался предупреждениями на date()

14.02.2011, 19:01 [17547 просмотров]


теги: время ошибка php

К этой статье пока нет комментариев, Ваш будет первым