Un fichier .env correctement configuré et un storage fonctionnel sont essentiels pour toute application Laravel. Dans ce guide, vous apprendrez comment les configurer correctement pour un environnement de production.

Comprendre le fichier .env

Le fichier .env contient des configurations spécifiques à l'environnement qui ne doivent pas être versionnées.

Pourquoi utiliser .env

  • Sépare la configuration du code
  • Empêche les données sensibles dans Git
  • Facilite le déploiement vers différents environnements
  • Chaque environnement (dev, staging, production) a son propre .env

Créer un .env

Lorsque vous clonez Laravel, créez un .env :

cd ~/domains/votredomaine.nl/projet
# Copier le fichier exemple
cp .env.example .env
# Générer la clé de l'application
php artisan key:generate

Paramètres essentiels du .env

Configurez ces paramètres pour la production.

Paramètres de l'application

APP_NAME="Mon Application Laravel"
APP_ENV=production
APP_KEY=base64:clé-générée-ici
APP_DEBUG=false
APP_TIMEZONE=Europe/Amsterdam
APP_URL=https://votredomaine.nl

Important :

  • `APP_ENV=production` active les optimisations de production
  • `APP_DEBUG=false` empêche l'affichage des messages d'erreur
  • `APP_URL` doit contenir votre URL complète avec https

Configuration de la base de données

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=votre_base_de_données
DB_USERNAME=votre_utilisateur
DB_PASSWORD=votre_mot_de_passe
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

Configuration des logs

LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=error

Pour la production :

  • `daily` crée un nouveau fichier de log par jour
  • `LOG_LEVEL=error` ne journalise que les erreurs, pas les avertissements

Cache et Session

CACHE_STORE=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=true
SESSION_PATH=/
SESSION_DOMAIN=.votredomaine.nl

Pour de meilleures performances sur un hébergement partagé, `file` est le meilleur choix.

Configuration de la Queue

QUEUE_CONNECTION=database

Ou pour un hébergement partagé sans workers :

QUEUE_CONNECTION=sync

Configuration de l'email

MAIL_MAILER=smtp
MAIL_HOST=mail.votredomaine.nl
MAIL_PORT=587
MAIL_USERNAME=info@votredomaine.nl
MAIL_PASSWORD=ton-mot-de-passe-email
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@votredomaine.nl
MAIL_FROM_NAME="${APP_NAME}"

Configurer le stockage

Laravel utilise le dossier storage pour les logs, le cache et les uploads.

Structure du stockage

storage/
├── app/
│   ├── public/      # Uploads accessibles au public
│   └── private/     # Fichiers privés
├── framework/
│   ├── cache/       # Cache de fichiers
│   ├── sessions/    # Fichiers de session
│   └── views/       # Vues compilées
└── logs/            # Fichiers de log

Créer un lien de stockage

Le stockage public doit être accessible via le web :

# Créer le symlink
php artisan storage:link

Cela crée : `public/storage` -> `storage/app/public`
Vérifiez si le lien fonctionne :

ls -la public/
# Vous devriez voir : storage -> /chemin/vers/storage/app/public

Si la commande artisan ne fonctionne pas :

cd public
ln -s ../storage/app/public storage

Configurer les droits de stockage

Assurez-vous que Laravel peut écrire :

# Rendre récursivement accessible en écriture
chmod -R 775 storage
chmod -R 775 bootstrap/cache
# Définir le propriétaire (si nécessaire)
chown -R www-data:www-data storage
chown -R www-data:www-data bootstrap/cache

Sur un hébergement partagé, il suffit généralement de faire chmod.

Sécurité de production

Protégez votre .env et votre stockage.

Protéger le .env

Le fichier .env ne doit jamais être accessible au public :

  1. Le dossier public de Laravel est la racine du document
  2. .env est un niveau plus haut
  3. .htaccess bloque l'accès

Vérifiez avec :

curl https://votredomaine.nl/.env
# Doit renvoyer 403 ou 404, JAMAIS le contenu !

.env dans .gitignore

Assurez-vous que .env ne soit jamais dans Git :

.env
.env.backup
.env.production

Protéger le stockage

Protéger les uploads privés :

// Dans routes/web.php
Route::get('/download/{file}', function ($file) {
    // Vérification d'autorisation
    if (!auth()->check()) {
        abort(403);
    }
    return Storage::download('private/' . $file);
});

Configuration du cache

Optimisez le caching pour la production.

Cache de configuration

php artisan config:cache

Cela combine tous les fichiers de configuration dans un fichier mis en cache.
Attention : Après config:cache, .env n'est plus lu directement. Les modifications dans .env nécessitent :

php artisan config:clear
php artisan config:cache

Cache de route

php artisan route:cache

Accélère considérablement la résolution des routes.

Cache de vue

php artisan view:cache

Pré-compile toutes les templates Blade.

Tout en même temps

php artisan optimize

Ou lors du déploiement :

php artisan optimize:clear
php artisan optimize

Problèmes courants

Permission de stockage refusée

# Réinitialiser les droits
chmod -R 775 storage bootstrap/cache
# Contexte SELinux (CentOS/RHEL)
chcon -R -t httpd_sys_rw_content_t storage

Sur certains serveurs, les symlinks sont désactivés :

# Copier au lieu de symlink
cp -r storage/app/public/* public/storage/

Ou modifiez le FileController pour servir les fichiers.

Les modifications .env ne fonctionnent pas

# Vider le cache de configuration
php artisan config:clear
# Ou si vous n'avez pas SSH
# Supprimez : bootstrap/cache/config.php

Problèmes de APP_KEY

Si vous manquez ou si votre APP_KEY est incorrect :

php artisan key:generate

Cela régénère la clé. Attention : les données chiffrées existantes deviendront illisibles.

Détection de l'environnement

Vérifiez l'environnement actuel dans le code :

// Dans le code
if (app()->environment('production')) {
    // Code spécifique à la production
}
// Dans Blade
@production
    
@endproduction

Meilleures pratiques

Gestion du .env

  • Ne jamais utiliser le même .env en dev et en production
  • Conservez le .env de production en sécurité (gestionnaire de mots de passe)
  • Utilisez des mots de passe forts et uniques
  • Faites régulièrement tourner les identifiants

Gestion du stockage

  • Configurer une sauvegarde pour storage/app
  • Envisagez le stockage cloud pour l'évolutivité
  • Nettoyez régulièrement les anciens logs

Articles connexes

Besoin d'aide ?

Nous sommes là pour vous ! Vous rencontrez un problème ou avez des questions ? Notre équipe de support se fera un plaisir de vous aider personnellement. Envoyez-nous un message via le système de tickets - nous répondons généralement dans quelques heures et sommes heureux de vous aider.