【问题标题】:Timezone in symfonysymfony 中的时区
【发布时间】:2017-04-25 07:24:12
【问题描述】:

我正在尝试通过 symfony new name_project 2.7.21 运行新的 symfony 项目。不幸的是,我一直遇到不正确时区的错误。我在我的 C:\xampp\php\php.ini 文件中更改了它。我必须在其他地方更改它吗?非常感谢您的帮助

【问题讨论】:

  • 哪个错误?在您的要求页面中?你重启了网络服务器吗?
  • 错误是:必须设置date.timezone设置。在 php.ini 中设置 date.timezone 设置(如 Europe/Paris)。因此,我更改为欧洲/阿姆斯特丹时区,并在 php 中运行了一个小检查,显示我的日期相同: 我不知道我还能做什么。

标签: php symfony timezone


【解决方案1】:

试试

在app/AppKernel.php中添加

 public function __construct($environment, $debug)
{
    date_default_timezone_set( 'Europe/Warsaw' );
    parent::__construct($environment, $debug);
}

我在 CI 系统上遇到了同样的问题,这就是解决方案

【讨论】:

  • 我不确定我是否理解,我对此很陌生。我应该将它添加到哪个 appKernel。我认为 appKernel 是在我创建 symfony 项目后创建的,但由于时区问题我不能。
  • 您描述的问题表明您的服务器上的时区配置存在问题。简单的方法(服务器配置中的 witchout 混乱)是在 AppKernel 中添加上述代码 - 该代码覆盖错误的配置设置。是的,您需要在创建 symfony 项目时创建的 appkernel 中添加它。 (你不从浏览器编辑appkernel,你需要使用文本/代码编辑器)
  • 我想我越来越近了,但它仍然不起作用。我通过 nano 编辑器对其进行了更改,并将此功能添加到 appKernel 中……还有其他想法吗?
  • 必须设置 date.timezone 设置。在 php.ini 中设置 date.timezone 设置(如 Europe/Paris)。我还做了一个检查,它说时间匹配
  • 我解决了,我只在 apache2 php.ini 文件中添加了时区,我也必须添加到 cli php.ini 中。在我做之后它起作用了。非常感谢您的帮助
【解决方案2】:

如果你的 Symfony 版本是 "^4.*" 你可以在 project/public/index.php 中设置你的全局时区

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); date_default_timezone_set( 'Europe/Moscow' ); $request = Request::createFromGlobals();

PHP 支持的时区列表如下

https://www.php.net/manual/en/timezones.europe.php

【讨论】:

    【解决方案3】:

    Ubuntu

    虽然我在 /etc/php5/apache2/php.ini 文件中设置了 date.timezone。

    我必须在 cli 目录中的 php.ini 文件中设置 date.timezone = "Asia/Calcutta"。

    /etc/php5/cli/php.ini

    这为我解决了...

    【讨论】:

      【解决方案4】:

      如果编辑 ini 文件不起作用,请确保您正在编辑正确的文件。通过输出phpinfo结果来检查php正在加载哪个ini文件。

      否则,您可以在app.phpapp_dev.php 中硬编码时区

      见:http://php.net/manual/en/function.date-default-timezone-set.php

      【讨论】:

        【解决方案5】:

        嘿,所以我花了很多时间来追查这个问题,所以这就是有效的方法。要找到您需要更改的真实 php.ini,请转到终端并运行以下命令: php -i | grep "php.ini"

        你会得到这样的路径:Configuration File (php.ini) Path => /etc

        当您转到该目录时,您可能会发现您实际上根本没有 php.ini 文件,而是有一个名为 php.ini.default 的文件!!!

        像这样在终端中复制那个坏男孩:sudo cp php.ini.default php.ini

        然后打开新的php.ini 文件并编辑date.timezone = "Europe/Paris"

        重要!!!重新启动您的本地服务器!

        然后回到终端并像这样运行 Symfony 的抱怨验证器:php my_project_name/bin/symfony_requirements

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-25
          • 1970-01-01
          • 2017-07-06
          • 2015-03-17
          • 2018-07-09
          • 2015-04-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多