php - Symfony 2.7 : default timezone not set, 导致 fatal error

标签 php symfony timezone server

我正在尝试在共享服务器 上设置一个基于 symfony 2.7 的应用程序,并且没有权限更改 php.ini.

执行:php app/console doctrine:schema:drop --force

输出此警告/错误:

PHP Warning:  Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message '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.'
0 [internal function]: Symfony\Component\Debug\ErrorHandler-    >handleError(2, 'date_default_ti...', '/path...', 272, Array)
1 /domain.com/app/vendor/monolog/monolog/src/Monolog/Logger.php(272): date_default_timezone_get()
2 /domain.com/app/vendor/monolog/monolog/src/Monolog/Logger.php(481): Monolog\Logger->addRecord(100, 'Notified event ...', Array)
3 /domain.com/app/vendor/symfony/ in /domain.com/app/vendor/monolog/monolog/src/Monolog/Logger.php on line 272
PHP Fatal error:  date_default_timezone_get(): Timezone database is corrupt - this should *never* happen! in /domain.com/app/vendor/monolog/monolog/src/Monolog/Logger.php on line 272
PHP 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 /domain.com/app/vendor/monolog/monolog/src/Monolog/Logger.php on line 272
PHP Fatal error:  date_default_timezone_get(): Timezone database is corrupt - this should *never* happen! in /domain.com

我试过了 this :

class AppKernel extends Kernel
{
    public function init()
    {
        date_default_timezone_set( 'Europe/Berlin' );
        parent::init();
    }
}

输出下一个错误:

PHP Fatal error:  Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message 'Notice: date_default_timezone_set(): Timezone ID 'Europe/Berlin' is invalid' in /domain.com/app/app/AppKernel.php:42

根据 php.net Europe/Berlin 是一个有效的标识符。

根据 this answer timezonedb.so 应该安装(不是)。

根据 Symfony 1.4 docs可以在 settings.yml 中设置 default_timezone。我找不到 >= 2.0 的类似配置。 编辑:“与 Symfony 1.4 不同,Symfony2 中没有用于设置默认时区的 default_timezone 配置参数。[...]”(source)

有什么想法,如何解决这个问题?

提前致谢!

最佳答案

建议您在 php.ini 中设置时区,但如果您在共享环境中或由于某种原因无法访问它,您可以将其添加到 app/AppKernel.php

class AppKernel extends Kernel
{
        public function __construct($environment, $debug)
        {
            date_default_timezone_set( 'America/Detroit' );
            parent::__construct($environment, $debug);
        }
}

关于php - Symfony 2.7 : default timezone not set, 导致 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016878/

相关文章:

javascript - 从 textField 中清除或删除文件

php - 如何确保其他程序员不会在我的站点中放置后门和回调!

php - 在 PHP 中检查图像高度/宽度

php - 如何在表达式语法中调用变量(对象)的方法? [ Twig 模板]

google-bigquery - 如何在 BigQuery 标准 SQL 中将 IP 地址转换为地理位置?

java - jdk7u25 是否引入了时区错误?

php - sql查询生日的问题

php - 如何在 Symfony 和 Doctrine 中实现 ManyToMany 和 OneToMany?

javascript - 在 Symfony2 中通过 ajax 提交表单

python - 将 Pandas 时区感知 DateTimeIndex 转换为天真的时间戳,但在特定时区