我没有找到任何关于如何在Lumen 5.2中设置默认时区的相关信息(只有一些技巧)。是否有干净利落的方式来完成这个任务?
APP_TIMEZONE=UTC
在许多论坛中,我阅读的所有回复都没有解决这个问题,因为在文件/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文件,然后复制所有内容但不包括时区行。这对我有用。
这个很容易做到,可以在他们的文档页面中找到:
要在运行时设置配置值,请将数组传递给config助手:
config(['app.timezone' => 'America/Chicago']);
或者,在app/config.php
中:
'timezone' => 'UTC',
config/app.php
中。我们必须调用:$app->configure('app')
,以使其正常工作。 - krisanalfavendor/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。(旧文档)
config/app.php
中,你可以更改它:
'timezone' => 'UTC',
.env
文件中设置DB_TIMEZONE
。 - rizqyhi