我没有找到关于如何在Lumen 5.2中设置默认时区的任何相关信息(仅限技巧)。有没有干净的方法来做到这一点?
这很容易完成,并在他们的documentation page中显示:
要在运行时设置配置值,请将数组传递给配置帮助程序:
config(['app.timezone' => 'America/Chicago']);
或者,在app/config.php
:
'timezone' => 'UTC',
在Lumen 5.2中,Application类实际上是从APP_TIMEZONE环境变量中读取的。
您可以使用或设置服务器上的环境变量,通过.env文件轻松设置时区:
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/app.php
你可以改变它
'timezone'=>'UTC',
只是恢复并且非常清楚(在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'));
...
ref:https://github.com/laravel/lumen-framework/blob/5.6/src/Application.php#L83
我们看到流明不会采用任何config
值,只需要一个env
值来设置时区。
所以复制/粘贴/laravel/lumen-framework/config directory
在流明中使用full "Laravel style" configuration files
的技术在这种情况下不适用,而且从来没有。
此外:该技术是对Lumen第一版的旧参考。 ref:https://lumen.laravel.com/docs/5.1#configuration-files。 (旧文档)
在Lumen的当前版本5.6中,已经从文档中删除了提示,并且可能是在Lumen的初始阶段帮助从Laravel迁移的提示,但不再是一个好的做法。所以总是使用.env文件。 ref:https://lumen.laravel.com/docs/5.6#configuration(新文档)