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 


что странно.



есть идеи? Спасибо.

703   7  

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 каталог проекта. Перезаписать

нашел похожий способ исправить эту проблему (по крайней мере для меня).

  1. сначала проверьте, где CLI php.ini расположен:

    php -i | grep "php.ini"

  2. в моем случае, я закончил с : конфигурационный файл (php.ini) Path = > / etc

  3. затем cd .. всю дорогу назад и cd на /etc, у ls в моем случае php.ini не появился, только a РНР.Ини.по умолчанию

  4. теперь скопируйте php.Ини.файл по умолчанию с именем php.ini:

    sudo cp php.ini.default php.ini

  5. для редактирования измените разрешения файла:

    sudo chmod ug+w php.ini

    sudo chgrp staff php.ini

  6. откройте каталог и отредактируйте php.ini-файл:

    open .

    Совет: Если вы не можете редактировать PHP.ini из-за некоторых проблем с разрешениями, то копировать ' php.Ини.по умолчанию и вставьте его на свой рабочий стол и переименовать его в PHP.ini ' затем откройте его и отредактируйте после шага 7. Затем переместить (скопировать+вставить) его в папке "/etc". Вопрос будет решен.

  7. найдите [дата] и убедитесь, что следующая строка имеет правильный формат:

    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

    Ничего не найдено.