Конфигурация PHP: небезопасно полагаться на настройки часового пояса системы

Здесь странный. Я просто обновляюсь до php 5.3.0 и после обновления получаю следующее предупреждение:

Предупреждение: getdate() [function.getdate]: небезопасно полагаться на настройки часового пояса системы. Вам необходимо использовать параметр date.timezone или функцию date_default_timezone_set(). Если вы использовали какой-либо из этих методов и по-прежнему получаете это предупреждение, вы, скорее всего, неправильно написали идентификатор часового пояса. Мы выбрали "Америка / Чикаго" для "CST/-6.0/ без летнего времени"

Просматривая различные форумы, все говорят, что для решения проблемы все, что вам нужно сделать, это отредактировать зону дат в php.ini и перезапустить Apache.

Это не сработало для меня.

Я старался

date.timezone="America/New_York"

date.timezone=America/New_York

date.timezone="US/Central"

Перезапустил apache после того, как я внес изменение.

Так как у меня все еще установлена ​​более старая версия php, я даже убедился, что редактирую php.ini, который в данный момент используется для загрузки текущей версией php

/usr/local/php5/lib/php.ini

Все еще получаю предупреждение.

Какие-либо предложения?

Спасибо, что нашли время.

12 ответов

Чальвак, который прокомментировал исходный вопрос, ударил меня по голове гвоздем. Я редактировал (я использую Debian):

/etc/php5/apache2/php.ini

... который имел правильный часовой пояс для меня и был единственным INI-файлом, который загружался с датой datetimetime внутри него, но я получал вышеуказанную ошибку, когда запускал скрипт через Bash. Я понятия не имел, что я должен был редактировать:

/etc/php5/cli/php.ini

также. (Ну, для меня это было "так же хорошо", для вас, конечно, это могло бы быть по-другому, но я собираюсь сейчас синхронизировать свои версии php.ini для Apache и CLI).

Вы пытались установить часовой пояс с помощью func: http://pl.php.net/manual/en/function.date-default-timezone-set.php

Мне недавно пришлось установить Apache & PHP на двух ноутбуках. После долгих рыданий и скрежетов я заметил в выводе phpinfo, что (по какой-то причине: не обращая внимания во время установки PHP, плохой установщик) Apache ожидал, что php.ini окажется где-то там, где его нет.

Два варианта:

  1. положить его там, где Apache думает, что это должно быть или
  2. укажите Apache на истинное местоположение вашего php.ini

... и перезапустите Apache. Настройки часового пояса должны быть распознаны в этот момент.

Откройте файл.htaccess, добавьте эту строку в файл, сохраните и попробуйте снова:

php_value date.timezone "America/Sao_Paulo"

Это работает для меня.

Попробуйте это, это работает для меня.

date_default_timezone_set('America/New_York');

В фактическом файле, который жаловался.

Пожалуйста, измените ваш index.php следующим образом:

require_once($yii);
$app = Yii::createWebApplication($config);
Yii::app()->setTimeZone('UTC');
$app->run();

Очевидно, я немного не в сезон по этому вопросу, но в пользу следующего страдальца: у меня просто была эта проблема, и в моем случае (в отличие от OP, который пытался сделать то же самое без успеха), исправление было в пересмотре php.ini меняется

date.timezone = America/New York

в

date.timezone = America/New_York

Это добавление подчеркивания.

Проверьте синтаксические ошибки в файле php.ini, особенно перед параметрами Date, которые не позволяют правильно анализировать файл.

Я изменил /etc/php.ini

[Дата]; Определяет часовой пояс по умолчанию, используемый функциями даты; http://php.net/date.timezone date.timezone = ('Азия / Калькутта')

и сейчас работает нормально.

Випин Пал

Возможно, вы забыли удалить точку с запятой, чтобы раскомментировать эту строку. Для date.timezone = "US/Central" убедитесь, что перед этой строкой нет точки с запятой.

Как ни странно, я обнаружил, что могу исправить ошибки, поместив объявление о часовом поясе в ТОП моего файла php.ini.

Это было уже в моем php.ini. Дважды на самом деле. И я вырывал свои волосы, потому что все говорили, что должен быть загружен другой ini... Там не было.

Надеюсь, что это может сэкономить кому-то еще время / выпадение волос.

Также вы можете попробовать это

date.timezone = <?php date('Y'); ?>
Другие вопросы по тегам