Назад | Перейти на главную страницу

Предупреждение PHP date.timezone

Я получаю эту ошибку:

Сообщение: date () [function.date]: небезопасно полагаться на настройки часового пояса системы. Ты обязательный использовать параметр date.timezone или функцию date_default_timezone_set (). Если вы использовали любой из этих методов и по-прежнему получаете это предупреждение, скорее всего, вы неправильно написали идентификатор часового пояса. Вместо этого мы выбрали America / New_York для EST / -5.0 / no DST.

Я отредактировал свой php.ini и добавил это в конец: date.timezone = "America / New_York"

После сохранения php.ini и перезапуска Apache я все еще получаю ошибку. Я также попытался перезагрузить весь сервер безрезультатно.

Я запускаю cPanel / WHM на CentOS 5.6, если это имеет значение. Также обработчик PHP - suphp.

Я не уверен, что попробовать дальше ... есть какие-нибудь рекомендации?

откройте соответствующий файл php.ini и добавьте следующее, заменив часовой пояс на тот, который вам подходит (список имен часовых поясов - http://php.net/date.timezone):

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/Chicago"

для более подробной информации:

http://forums.modx.com/thread/33294/solved-warning-strtotime-function-strtotime-in-evo-1-01-on-php-5-3-0

Похоже, что в вашей системе может быть более одного php.ini, и был отредактирован неправильный. Я считаю, что можно указать другой каталог php.ini для каждого виртуального хоста с помощью suPHP (используя параметр suPHP_ConfigPath).

Есть несколько вариантов. Во-первых: вы можете (как предлагается в сообщении об ошибке) использовать:

date_default_timezone_set()

Однако это делает ваш код менее переносимым.

В качестве альтернативы вы можете дважды проверить, какой файл php.ini загружается при выполнении скрипта, создав страницу phpinfo; то есть просто доступный через Интернет файл php со следующим содержимым:

<?php
phpinfo();

Просмотрите страницу и найдите разделы, отмеченные «Загруженный файл конфигурации» и «Дополнительные проанализированные файлы .ini». Они должны сообщить вам, какие ini-файлы вам нужно редактировать.

Стоит проверить все из файлов, перечисленных как любой из них, могут содержать неверные настройки date.timezone, которые заменяют установленный вами.

Я просто решил эту проблему. Сначала я подумал, что читается неправильный php.ini. После многих проверок я обнаружил проблему. Это было из-за того, что у меня был лишний «в середине php.ini», поэтому он получал ошибку, не позволяющую загрузиться остальным. Я исправил это, и он работает отлично. Вы можете проверить наличие ошибок, выполнив следующую команду: php -i | grep php.ini | хвост -n2
Мариано

Я исправил это, убрав кавычки вокруг строкового значения.

Так,

date.timezone = "Европа / Лондон"

становится ...

date.timezone = Европа / Лондон

и проблема ушла. Хотя меня это немного беспокоит.