如何在Lumen 5.2中设置时区?

8

我没有找到任何关于如何在Lumen 5.2中设置默认时区的相关信息(只有一些技巧)。是否有干净利落的方式来完成这个任务?

6个回答

16
在Lumen 5.2中,Application类实际上是从APP_TIMEZONE环境变量中读取的。
您可以通过在.env文件中使用或设置服务器上的环境变量来轻松设置时区。
APP_TIMEZONE=UTC

7

在许多论坛中,我阅读的所有回复都没有解决这个问题,因为在文件/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文件,然后复制所有内容但不包括时区行。这对我有用。


3
我认为我们只需要在 .env 文件中设置 DB_TIMEZONE - rizqyhi
这是我在处理DST问题时找到的唯一有效解决方案。 - sjosen

6

这个很容易做到,可以在他们的文档页面中找到:

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

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

或者,在app/config.php中:

'timezone' => 'UTC',

它应该在 config/app.php 中。我们必须调用:$app->configure('app'),以使其正常工作。 - krisanalfa
@edgji的回答是正确的。问题是要更改默认时区。 - Abhishek Reddy
以上就是如此。他的答案是一种替代方案。 - Derek Pollard

5

这比其他答案要简单得多。 - Frosty

2
只是为了恢复并明确一下(在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 目录 以使用 完整的 "Laravel 风格" 配置文件 的技术在这种情况下不适用,并且从来没有适用过。

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

在当前版本5.6的Lumen文档中,已经删除了该提示,并且可能是为了帮助在Lumen最初时期从Laravel迁移而提供的提示,但现在不再是一个好的实践。因此,始终使用.env文件。
参考:https://lumen.laravel.com/docs/5.6#configuration(新文档)

1
config/app.php中,你可以更改它:

'timezone' => 'UTC',


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接