When I tried Lumen for the first time, I encountered a problem. The time found from the database was 8 hours slower than the TIMESTAMP time saved in the database. Obviously this is a time zone setting problem. This article will mainly share with you Lumen timezone. Time zone setting method, I hope it can help everyone.
According to the experience of Laravel 4.x and 5.0, you only need to set the 'timezone' parameter to 'PRC' in config/app.php. Find the Lumen config directory in /vendor/laravel /lumen-framework/config path, but there is no timezone parameter option in the parameter options of config/app.php, and it is invalid even if it is added manually.
Then I thought about the .env file of Laravel 5, and found that there is no option for timezone setting in Lumen’s .env file.
Go back to the config directory and look at the settings in config/database.php. The default configuration for mysql is as follows:
'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' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => env('DB_PREFIX', ''), 'timezone' => env('DB_TIMEZONE','+00:00'), 'strict' => false, ],
There is one here The timezone setting of the database defaults to +00:00, which is UTC time. Change it to +08:00 to solve the problem. Since the project enabled the .env configuration file, a line
DB_TIMEZONE=+08:00
was finally added to the .env file to solve the database timezone problem.
Although the timezone problem of the database has been solved, the timezone problem of the app has not been solved. Search the lumen project globally to find the place where timezone is used. It is in /vendor/laravel/lumen-framework/src/ The code for initializing the lumen timezone part was found in the Application.php
file
/** * 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')); $this->basePath = $basePath; $this->bootstrapContainer(); $this->registerErrorHandling(); }
The .env parameter used in the code is APP_TIMEZONE, and the value is UTC. Here, UTC Change to PRC, or add
APP_TIMEZONE=PRC
lumen php's time zone setting problem in the .env file.
Summary of Lumen time zone settings
Edit .env file to add configuration
APP_TIMEZONE=PRC DB_TIMEZONE=+08:00
If .env configuration is not enabled file, edit
/vendor/laravel/lumen-framework/config/database.php /vendor/laravel/lumen-framework/src/Application.php
and modify the APP_TIMEZONE and DB_TIMEZONE parameter values respectively.
Enable .env configuration file
Rename the .env.example file in the Lumen root directory to .env, edit /bootstrap/app.php, and cancel as follows Comments on the line of code
Dotenv::load(__DIR__.'/../');
Addition:
Because lumen uses Greenwich time by default, it needs to be converted to Beijing time.
Add
APP_TIMEZONE=PRC to .env
DB_TIMEZONE=+08:00
The time will be correct
Related recommendations:
A brief discussion on custom dependency injection of lumen framework
System time zone setting of PHP date and time function
Linux PHP MySQL Detailed explanation of time zone setting method_PHP tutorial
The above is the detailed content of Lumen timezone time zone setting method. For more information, please follow other related articles on the PHP Chinese website!