Configuració

Com configurar Laravel: fitxer .env, directori config/ i gestió d'entorns.

El fitxer .env#

Tota la configuració que depèn de l'entorn d'execució es gestiona a través del fitxer .env, situat a l'arrel del projecte. Aquest fitxer conté variables com les credencials de la base de dades, les claus d'API i la configuració del servidor de correu. És important que mai pugis aquest fitxer al control de versions, ja que conté informació sensible.

APP_NAME=LaravelAndorra
APP_ENV=local
APP_KEY=base64:...
APP_DEBUG=true
APP_URL=http://localhost
 
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_andorra
DB_USERNAME=root
DB_PASSWORD=
 
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025

Quan instal·les Laravel, es crea automàticament un fitxer .env a partir de .env.example. Cada desenvolupador de l'equip tindrà el seu propi .env amb els valors adequats per al seu entorn local.

Accedir a la configuració#

Per accedir als valors de configuració, Laravel proporciona la funció config(). Aquesta funció llegeix els valors dels fitxers PHP del directori config/:

// Obtenir el nom de l'aplicació
$appName = config('app.name');
 
// Obtenir un valor amb un valor per defecte
$timezone = config('app.timezone', 'UTC');
 
// Establir un valor en temps d'execució
config(['app.timezone' => 'Europe/Andorra']);

No utilitzis env() directament fora dels fitxers de configuració. En producció, quan la configuració es guarda en cache, les crides a env() retornaran null. Utilitza sempre config() per accedir als valors.

El directori config/#

El directori config/ conté tots els fitxers de configuració de l'aplicació, organitzats per funcionalitat. Cada fitxer retorna un array associatiu amb les opcions disponibles:

// config/app.php
return [
    'name' => env('APP_NAME', 'Laravel'),
    'env' => env('APP_ENV', 'production'),
    'debug' => (bool) env('APP_DEBUG', false),
    'url' => env('APP_URL', 'http://localhost'),
    'timezone' => 'UTC',
    'locale' => 'ca',
];

Els fitxers de configuració més importants són app.php per a les opcions generals de l'aplicació, database.php per a les connexions de base de dades, mail.php per a la configuració de correu, cache.php per als drivers de cache, queue.php per a la configuració de cues, session.php per a les sessions i filesystems.php per als sistemes de fitxers.

Entorns#

Laravel permet que l'aplicació es comporti de manera diferent segons l'entorn en què s'executa. El valor de la variable APP_ENV del fitxer .env determina l'entorn actual, i pots comprovar-lo des del codi:

use Illuminate\Support\Facades\App;
 
if (App::environment('production')) {
    // Desactivar informació de depuració
}
 
if (App::environment(['local', 'staging'])) {
    // Mostrar barres de depuració
}

Normalment tindràs tres entorns: local per al desenvolupament, staging per a proves abans de producció i production per al servidor final.

Cache de configuració#

En producció, és recomanable guardar la configuració en cache per millorar el rendiment. Laravel combina tots els fitxers de configuració en un sol fitxer PHP cachejat, cosa que redueix el nombre de fitxers que cal llegir en cada petició:

# Crear la cache de configuració
php artisan config:cache
 
# Esborrar la cache quan facis canvis
php artisan config:clear

Recorda que després d'executar config:cache, qualsevol canvi al fitxer .env no tindrà efecte fins que tornis a executar la comanda. Per això, durant el desenvolupament local, és millor no utilitzar la cache de configuració.