Enhance checking of configuration cache and environment.
Laravel's environment can be sepcified with the --env
option of artisan command or APP_ENV
environment variable, but specified environment is ignored when the configuration is cached.
Since this is potentially dangerous, when configuration is cached, it is prohibited to specify the environment with --env
option or APP_ENV
environment variable.
When generating the configuration cache with the config: cache
command, prohibit specification of the environment with the --env
option or the APP_ENV
environment variable.
Therefore, only the default environment described in the .env
file can be cached.
Saves the checksum of the .env
file when the config cache is generated.
It is checked whether it matches that of the current .env
file.
If they do not match, an error will occur.
Some artisan commands do not depend on the environment, so exclude them from checking.
If you want to add some commands to exclude, use the excluded_command
setting in config/env_check.php
.
composer require crhg/laravel-env-check
php artisan vendor:publish --provider='Crhg\EnvCheck\Providers\EnvCheckServiceProvider'
Add the following code before return $app
in bootstrap/app.php
;
$app->singleton(\Crhg\EnvCheck\EnvChecker::class);
$app->beforeBootstrapping(
\Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class,
function ($app) {
$checker = $app->make(\Crhg\EnvCheck\EnvChecker::class);
$checker->examineEnvironmentVariables();
}
);
- If
local
environment is cached:
% php artisan migrate:status --env=foo
Don't use --env option when configuration is cached
- If
.env
is modified afterconfig:cache
:
% php artisan migrate:status
.env hash unmatch