sto usando dotenv per PHP per gestire le impostazioni di ambiente (non lavarel ma ho taggato perché lavarel utilizza anche dotenv)dotenv richiede file di .env sulla produzione
Ho escluso il .env dalla base di codice e ho aggiunto il .env.example per tutti gli altri collaboratori
nella pagina GitHub di dotenv:
phpdotenv è fatto per gli ambienti di sviluppo, e in genere non deve essere utilizzato in produzione. Nella produzione, le variabili di ambiente effettive devono essere impostate in modo che non ci sia sovraccarico del caricamento del file .env su ogni richiesta. Questo può essere ottenuto tramite un processo di distribuzione automatizzato con strumenti come Vagrant, chef o Puppet o può essere impostato manualmente con host cloud come Pagodabox e Heroku.
La cosa che non capisco è che ottengo la seguente eccezione:
PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Dotenv: Environment file .env not found or not readable.
Questo contraddice con quello che la documentazione dice "le variabili d'ambiente effettivi devono essere impostate in modo che non ci sia sovraccarico del caricamento del file .env su ogni richiesta. "
Quindi la domanda è se c'è qualche ragione per cui dotenv lancia quell'eccezione e/o mi manca qualcosa? Prima di tutto il comportamento è diverso rispetto ad altre biblioteche dotenv (Ruby)
Posso facilmente ovviare a questo, la soluzione non così bello:
if(getenv('APPLICATION_ENV') !== 'production') { /* or staging */
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
}
soluzione più bella di me, ma penso che dotenv dovrebbe gestire questo.
Aaah I può usare '$ dotenv-> required()' funziona in qualsiasi modo che sia bello. Il 'getenv ('APP_ENV');' è più sicuro credo? Penso di andare per il filecheck che andrà bene per il progetto attuale. Grazie! –
@SanderVisser cosa volevi dire dicendo che 'getenv ('APP_ENV')' è più sicuro? – Alik
Impedisce il caricamento del file .env in un ambiente di produzione anche se è presente. –