如何在 lumen 5.2 中设置时区?
How can I set Timezone in lumen 5.2?
我没有找到任何关于如何在 Lumen 5.2 中设置默认时区的相关信息(只有技巧)。有什么干净的方法可以做到这一点吗?
在config/app.php
你可以改变它
'timezone' => 'UTC',
这很容易完成并显示在他们的 documentation page:
To set configuration values at runtime, pass an array to the config
helper:
config(['app.timezone' => 'America/Chicago']);
或者,在 app/config.php
中:
'timezone' => 'UTC',
在 Lumen 5.2 中,应用程序 class 实际上从 APP_TIMEZONE 环境变量中读取。
您可以使用或在服务器上设置环境变量,通过 .env 文件轻松设置时区:
APP_TIMEZONE=UTC
None 我在很多论坛中阅读的回复解决了这个问题,因为在文件 /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 文件。然后复制没有时区行的所有内容。这对我有用。
只是恢复并非常清楚(在今年 2018 年):
All of the configuration options for the Lumen framework are stored in
the .env file.
在 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
值来设置时区。
所以 copy/paste /laravel/lumen-framework/config directory
在 Lumen 中使用 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(新文档)
您可以在 .env
文件中添加您的时区
APP_TIMEZONE=YOUR_TIME_ZONE
文档:
我没有找到任何关于如何在 Lumen 5.2 中设置默认时区的相关信息(只有技巧)。有什么干净的方法可以做到这一点吗?
在config/app.php
你可以改变它
'timezone' => 'UTC',
这很容易完成并显示在他们的 documentation page:
To set configuration values at runtime, pass an array to the config helper:
config(['app.timezone' => 'America/Chicago']);
或者,在 app/config.php
中:
'timezone' => 'UTC',
在 Lumen 5.2 中,应用程序 class 实际上从 APP_TIMEZONE 环境变量中读取。
您可以使用或在服务器上设置环境变量,通过 .env 文件轻松设置时区:
APP_TIMEZONE=UTC
None 我在很多论坛中阅读的回复解决了这个问题,因为在文件 /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 文件。然后复制没有时区行的所有内容。这对我有用。
只是恢复并非常清楚(在今年 2018 年):
All of the configuration options for the Lumen framework are stored in the .env file.
在 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
值来设置时区。
所以 copy/paste /laravel/lumen-framework/config directory
在 Lumen 中使用 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(新文档)
您可以在 .env
文件中添加您的时区
APP_TIMEZONE=YOUR_TIME_ZONE
文档: