【问题标题】:How can I set Timezone in lumen 5.2?如何在流明 5.2 中设置时区?
【发布时间】:2016-05-18 07:55:21
【问题描述】:

我没有找到有关如何在 Lumen 5.2 中设置默认时区的任何相关信息(仅技巧)。有什么干净的方法可以做到这一点吗?

【问题讨论】:

    标签: php laravel lumen lumen-5.2


    【解决方案1】:

    在 Lumen 5.2 中,Application 类实际上是从 APP_TIMEZONE 环境变量中读取的。

    您可以通过 .env 文件使用或设置服务器上的环境变量轻松设置时区:

    APP_TIMEZONE=UTC
    

    【讨论】:

      【解决方案2】:

      我在很多论坛上阅读的回复都没有解决问题,因为在文件 /vendor/laravel/lumen-framework/config/database.php 中有这一行:

      'mysql' => [
                  'driver'    => 'mysql',
                  'host'      => env('DB_HOST', 'localhost'),
                  'port'      => env('DB_PORT', 3306),
                  'database'  => env('DB_DATABASE', 'forge'),
                  'username'  => env('DB_USERNAME', 'forge'),
                  'password'  => env('DB_PASSWORD', ''),
                  'charset'   => env('DB_CHARSET', 'utf8'),
                  'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
                  'prefix'    => env('DB_PREFIX', ''),
                  **'timezone'  => env('DB_TIMEZONE', '+00:00'),**
                  'strict'    => env('DB_STRICT_MODE', false),
              ],

      您需要重写此配置文件。在 config 文件夹中创建一个 database.php 文件。然后复制没有时区行的所有内容。这对我有用。

      【讨论】:

      • 我想我们只需要在.env文件中设置DB_TIMEZONE
      • 这是唯一对我有用的关于 DST 的解决方案
      【解决方案3】:

      这很容易完成并显示在他们的documentation page

      要在运行时设置配置值,请将数组传递给配置 帮手:

      config(['app.timezone' => 'America/Chicago']);
      

      或者,在app/config.php:

      'timezone' => 'UTC',
      

      【讨论】:

      • 它应该在config/app.php。我们必须致电:$app->configure('app'),以使其正常工作。
      • @edgji 的回答是正确的。问题是更改默认时区。
      • 以上就是这样做的。他的答案是另一种选择。
      【解决方案4】:

      您可以在.env 文件中添加您的时区

      APP_TIMEZONE=YOUR_TIME_ZONE
      

      文档:

      List of Timezone

      Lumen Documentation

      【讨论】:

      • 这比其他答案简单得多
      【解决方案5】:

      只是为了恢复并超级清晰(在 2018 年):

      Lumen 框架的所有配置选项都存储在 .env 文件。

      在 Lumen 不存在config/app.php 文件。


      但是,如果我们查看vendor/laravel/lumen-framework/src/Application.php

      /**
       * Create a new Lumen application instance.
       *
       * @param  string|null  $basePath
       * @return void
       */
      public function __construct($basePath = null)
      {
          ...
              date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
          ...
      

      参考:https://github.com/laravel/lumen-framework/blob/5.6/src/Application.php#L83

      我们看到 Lumen 不会使用任何config 值,而只是使用env 值来设置时区。

      因此,在 Lumen 中复制/粘贴 /laravel/lumen-framework/config directory 以使用 full "Laravel style" configuration files 的技术在这种情况下不适用,而且从来没有。

      此外:该技术是对 Lumen 第一版的旧参考。
      参考:https://lumen.laravel.com/docs/5.1#configuration-files。 (旧文档)

      在 Lumen 的当前版本 5.6 中,该提示已从文档中删除,并且可能是在 Lumen 初期帮助从 Laravel 迁移的提示,但不再是一个好的做法。 所以请始终使用 .env 文件
      参考:https://lumen.laravel.com/docs/5.6#configuration(新文档)

      【讨论】:

        【解决方案6】:

        config/app.php
        你可以改变它

        '时区' => 'UTC',

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-03
          • 2016-09-11
          • 2014-11-21
          • 2015-06-01
          • 2014-11-16
          • 2019-10-19
          • 2020-04-25
          • 2015-09-27
          相关资源
          最近更新 更多