Introduction
All of the configuration files for the Laravel framework are stored
in the config
directory. Each option is documented, so feel
free to look through the files and get familiar with the options
available to you.
Accessing Configuration Values
You may easily access your configuration values using the global
config
helper function from anywhere in your application.
The configuration values may be accessed using "dot" syntax, which
includes the name of the file and option you wish to access. A default
value may also be specified and will be returned if the configuration
option does not exist:
$value = config('app.timezone');
To set configuration values at runtime, pass an array to the
config
helper:
config(['app.timezone' => 'America/Chicago']);
Environment Configuration
It is often helpful to have different configuration values based on the environment the application is running in. For example, you may wish to use a different cache driver locally than you do on your production server. It's easy using environment based configuration.
To make this a cinch, Laravel utilizes the DotEnv PHP library by
Vance Lucas. In a fresh Laravel installation, the root directory of your
application will contain a .env.example
file. If you
install Laravel via Composer, this file will automatically be renamed to
.env
. Otherwise, you should rename the file manually.
All of the variables listed in this file will be loaded into the
$_ENV
PHP super-global when your application receives a
request. However, you may use the env
helper to retrieve
values from these variables in your configuration files. In fact, if you
review the Laravel configuration files, you will notice several of the
options already using this helper:
'debug' => env('APP_DEBUG', false),
The second value passed to the env
function is the
"default value". This value will be used if no environment variable
exists for the given key.
Your .env
file should not be committed to your
application's source control, since each developer / server using your
application could require a different environment configuration.
If you are developing with a team, you may wish to continue including
a .env.example
file with your application. By putting
place-holder values in the example configuration file, other developers
on your team can clearly see which environment variables are needed to
run your application.
Determining The Current Environment
The current application environment is determined via the
APP_ENV
variable from your .env
file. You may
access this value via the environment
method on the
App
facade:
$environment = App::environment();
You may also pass arguments to the environment
method to
check if the environment matches a given value. If necessary, you may
even pass multiple values to the environment
method. If the
environment matches any of the given values, the method will return
true
:
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
An application instance may also be accessed via the app
helper method:
$environment = app()->environment();
Configuration Caching
To give your application a speed boost, you should cache all of your
configuration files into a single file using the
config:cache
Artisan command. This will combine all of the
configuration options for your application into a single file which will
be loaded quickly by the framework.
You should typically run the php artisan config:cache
command as part of your production deployment routine. The command
should not be run during local development as configuration options will
frequently need to be changed during the course of your application's
development.
Maintenance Mode
When your application is in maintenance mode, a custom view will be
displayed for all requests into your application. This makes it easy to
"disable" your application while it is updating or when you are
performing maintenance. A maintenance mode check is included in the
default middleware stack for your application. If the application is in
maintenance mode, an HttpException
will be thrown with a
status code of 503.
To enable maintenance mode, simply execute the down
Artisan command:
php artisan down
To disable maintenance mode, use the up
command:
php artisan up
Maintenance Mode Response Template
The default template for maintenance mode responses is located in
resources/views/errors/503.blade.php
. You are free to
modify this view as needed for your application.
Maintenance Mode & Queues
While your application is in maintenance mode, no queued jobs will be handled. The jobs will continue to be handled as normal once the application is out of maintenance mode.
Alternatives To Maintenance Mode
Since maintenance mode requires your application to have several seconds of downtime, you may consider alternatives like Envoyer to accomplish zero-downtime deployment with Laravel.