Конфигурация 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 окажется где-то там, где его нет.
Два варианта:
- положить его там, где Apache думает, что это должно быть или
- укажите 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'); ?>