- Home
- Blog
- Web developer
- Symfony: come usare environment variables in sicurezza (env, .env.local)
Symfony: come usare environment variables in sicurezza (env, .env.local)

Getting your Trinity Audio player ready... |
Uno dei punti di forza di Symfony è la sua gestione moderna delle variabili di ambiente, fondamentali per separare la configurazione dal codice sorgente.
Ma tanti sviluppatori, soprattutto alle prime armi, usano male .env, .env.local o non sanno come tenere API key, credenziali e configurazioni sensibili al sicuro.
Ecco una guida pratica per capire cosa fare e cosa evitare.
✅ Cosa sono le variabili di ambiente in Symfony
Le variabili di ambiente (env) sono valori dinamici che dicono all’app come comportarsi in ambienti diversi:
- DATABASE_URL
- MAILER_DSN
- APP_SECRET
- Chiavi API esterne
Così puoi avere:
- Ambiente
devlocale con credenziali di test - Ambiente
prodonline con dati reali - Senza modificare una riga di codice sorgente
📂 Dove vive la configurazione env
Symfony gestisce le variabili con:
- File
.env- Versionato su Git. Contiene i valori di default.
- File
.env.local- Non deve essere versionato.
- Sovrascrive i valori di
.envsolo sulla tua macchina o server. - Perfetto per configurazioni sensibili o diverse per sviluppatore.
- Vero ambiente server
- Su server prod, puoi (e devi) usare variabili di ambiente reali impostate via
.bashrc, panel Plesk, cPanel o CI/CD pipeline.
- Su server prod, puoi (e devi) usare variabili di ambiente reali impostate via
🧩 Come funziona l’override
Symfony carica i file in ordine:
.env.env.local(se esiste)- Variabili reali da ambiente server (
export VAR=value)
Quindi la variabile DATABASE_URL in .env.local sovrascrive quella in .env.
🔐 Best practice per la sicurezza
✅ 1. Non versionare .env.local
Aggiungilo a .gitignore. Eviti di committare credenziali DB, API key o segreti di produzione.
✅ 2. Usa variabili reali in produzione
Esempio:
export DATABASE_URL="mysql://user:password@127.0.0.1:3306/dbname" export APP_ENV=prod export APP_SECRET=xxxxxxx Non affidarti a file .env sul server live: se sbagli i permessi, potresti esporre tutto via web.
✅ 3. Controlla i permessi dei file
I file .env e .env.local devono avere permessi sicuri (644 o più restrittivi) e proprietà corretta (utente www-data su server Apache/Nginx).
✅ 4. Valida le variabili
Symfony ti aiuta con i parametri:
# config/services.yaml parameters: env(DATABASE_URL): '' Così se una variabile manca, ricevi un errore chiaro.
🗂️ Come leggere le variabili
Symfony usa il componente Dotenv:
$databaseUrl = $_ENV['DATABASE_URL']; Oppure con:
getenv('DATABASE_URL'); 🗝️ .env.local.example: bonus tip
Per team grandi:
- Crea un
.env.local.examplesenza valori sensibili ma con le chiavi. - Serve da modello per chi clona il repo.
🧠 Errore comune: caricare .env via web
Evita di lasciare i file .env accessibili da browser:
- Controlla
.htaccesso regole nginx. - Posiziona il progetto in cartelle sicure (
public/come root web).
🔚 Conclusione
Le variabili di ambiente sono fondamentali per mantenere Symfony flessibile, sicuro e pronto per ambienti diversi.
Segui poche regole:
✔️ .env versionato solo per default
✔️ .env.local ignorato da Git
✔️ Variabili reali sul server live
✔️ Niente segreti in chiaro in repo pubblici
🛟 Serve aiuto per configurare Symfony in produzione?
Contattami: posso aiutarti a configurare deploy, pipeline CI/CD, variabili ambiente e permessi server in modo professionale.