Сообщение об ошибке 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 просмотров]