Symfony2 и дата по умолчанию часовой пояс get () - это не безопасно полагаться на настройки часового пояса системы
у меня есть проект на Symfony2. Я обновил свой php до 5.5.7 сегодня и с тех пор, я получаю
Warning: date_default_timezone_get(): 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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in...
Я устанавливаю часовой пояс по умолчанию в моем php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris";
чтобы быть уверенным, что это хороший php.ini, я проверял с
phpinfo();
и путь, который я получаю там, - это тот, который я изменяю:
/usr/local/php5.5.7/lib
но там, я вижу
Default timezone UTC
что странно.
есть идеи? Спасибо.
7 ответов:
может быть, вы пытаетесь установить его в Apache
php.ini, но ваш CLI (интерфейс командной строки)php.iniэто не хорошо.найти
php.iniфайл со следующей командой:php -i | grep php.iniа потом искать
date.timezoneи установить его в"Europe/Amsterdam". все допустимые часовые пояса будут найдены здесь http://php.net/manual/en/timezones.phpдругой способ (если другой не работает), найдите файл
AppKernel.php, который должен быть под папкойappвашего Symfony каталог проекта. Перезаписать
нашел похожий способ исправить эту проблему (по крайней мере для меня).
сначала проверьте, где
CLI php.iniрасположен:
php -i | grep "php.ini"в моем случае, я закончил с : конфигурационный файл (php.ini) Path = > / etc
затем
cd ..всю дорогу назад иcdна/etc, уlsв моем случае php.ini не появился, только a РНР.Ини.по умолчаниютеперь скопируйте php.Ини.файл по умолчанию с именем php.ini:
sudo cp php.ini.default php.iniдля редактирования измените разрешения файла:
sudo chmod ug+w php.ini
sudo chgrp staff php.iniоткройте каталог и отредактируйте php.ini-файл:
open .Совет: Если вы не можете редактировать PHP.ini из-за некоторых проблем с разрешениями, то копировать ' php.Ини.по умолчанию и вставьте его на свой рабочий стол и переименовать его в PHP.ini ' затем откройте его и отредактируйте после шага 7. Затем переместить (скопировать+вставить) его в папке "/etc". Вопрос будет решен.
найдите [дата] и убедитесь, что следующая строка имеет правильный формат:
date.timezone = "Europe/Amsterdam"Я надеюсь, что это может помочь вам.
текущий принятый ответ crack устарел в Symfony 2.3 и будет удален 3.0. Он должен быть перемещен в конструктор:
public function __construct($environment, $debug) { date_default_timezone_set('Europe/Warsaw'); parent::__construct($environment, $debug); }
начиная с PHP 5.5, существует отдельный php.ini-файл для интерфейса CLI. Если вы используете консоль symfony из командной строки, то это конкретный php.используется ini.
в Ubuntu 13.10 проверьте файл:
/ etc/php5/cli / php.ini
проблема появляется, когда мы используем PHP 5.1 на Redhat или Cent OS
PHP 5.1 на RHEL / CentOS не поддерживает функции часового пояса
на ответ sas, PHP 5.4, Symfony 2.8, я должен был использовать
ini_set('date.timezone','<whatever timezone string>');вместо
date_default_timezone_set. Я также добавил вызовini_setв верхней части пользовательскогоweb/config.phpчтобы получить эту проверку, чтобы добиться успеха.
добавьте этот код в свой класс AppKernel:
public function init() { date_default_timezone_set('Asia/Tehran'); parent::init(); }
Comments