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

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

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

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

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

Я пробовал

date.timezone="America/New_York"

date.timezone=America/New_York

date.timezone="US/Central"

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

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

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

По-прежнему появляется предупреждение.

Любые предложения?

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

Ответ 1

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

/etc/php5/apache2/php.ini

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

/etc/php5/cli/php.ini

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

Ответ 3

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

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

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

... и перезапустите Apache. В этой точке следует определить настройки часового пояса.

Ответ 4

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

php_value date.timezone "America/Sao_Paulo"

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

Ответ 5

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

date_default_timezone_set('America/New_York');

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

Ответ 6

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

Ответ 7

Измените index.php следующим образом:

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

Ответ 8

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

date.timezone = America/New York

to

date.timezone = America/New_York

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

Ответ 9

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

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

и теперь работает нормально.

Vipin Pal

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

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

date.timezone = <?php date('Y'); ?>