У меня есть проект 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
Что странно.
Есть идеи? Спасибо.
Возможно, вы пытаетесь установить его в php.ini
Apache, но ваш интерфейс командной строки ( php.ini
) не подходит.
Найдите файл php.ini
со следующей командой:
php -i | grep php.ini
И затем найдите date.timezone
и установите его в "Europe/Amsterdam"
. весь действующий часовой пояс будет найден здесь http://php.net/manual/en/timezones.php
Другой способ (если другой не работает), искать файл AppKernel.php
, который должен находиться в папке app
вашего каталога проектов Symfony . Перезапишите функцию __construct
ниже в классе AppKernel
:
<?php class AppKernel extends Kernel { // Other methods and variables // Append this init function below public function __construct($environment, $debug) { date_default_timezone_set( 'Europe/Paris' ); parent::__construct($environment, $debug); } }
Нашел аналогичный способ исправить эту проблему (по крайней мере, для меня).
Сначала проверьте, где находится CLI php.ini
:
php -i | grep "php.ini"
В моем случае я закончил с: Файл конфигурации (php.ini) Path => / etc
Затем cd ..
весь путь назад и cd
в /etc
, do ls
в моем случае php.ini не отображался, только php.ini.default
Теперь скопируйте файл php.ini.default с именем 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.ini.default» и вставьте его на свой рабочий стол и переименуйте его в «php.ini», затем откройте его и отредактируйте на следующем шаге 7. Затем переместите (скопируйте + вставить) его в папку / etc. Проблема будет решена.
Найдите [Дата] и убедитесь, что следующая строка находится в правильном формате:
date.timezone = "Europe/Amsterdam"
Надеюсь, это поможет вам.
Текущий принятый ответ от трещины устарел в 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
После ответа 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(); }