Modifica: Questa domanda è stata applicata per test, ma in sostanza vorrei sapere se è possibile avere più di un file .env che può definire più set di ambiente variabili; molto simile a come L4 fatto con env.local.php
, env.testing.php
eccImpostazione di più insiemi di variabili di ambiente in Laravel 5
sto usando laravel 5 e lo sviluppo sulla scatola fattoria.
Ho il mio file .env popolato con le mie variabili di ambiente locali (database mysql, ecc.).
desidero utilizzare un database SQLite per il test così ho aggiunto alcune variabili per phpunit.xml
in modo che appaia in questo modo:
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="DB_DRIVER" value="sqlite" />
<env name="DB_PATH" value="database.sqlite" />
</php>
Tutte le variabili d'ambiente appropriate si fa riferimento nei file di configurazione per esempio env('DB_DRIVER')
.
Eppure, quando si tenta di eseguire la migrazione del database utilizzando php artisan migrate --env=testing
ottengo "niente di migrare", suggerendo laravel sta cercando di migrare il mio database locale (mysql) (che è già migrato).
Ho deciso di esplorare ulteriormente tramite Tinker, quindi ho eseguito php artisan tinker --env=testing
. All'interno di Tinker ho eseguito app()->environment();
che ha restituito "testing". Fin qui tutto bene!
Poi ho fatto eco le variabili env via $_ENV
, ed è tornato miei variabili d'ambiente locali, nonostante l'ambiente viene impostato su test.
Perché è questo? Sembra laravel sta ignorando le variabili phpunit.xml env e solo utilizzando il file .env indipendentemente ...
Modifica
Sembra laravel utilizza solo il file phpunit.xml se eseguito tramite phpunit sé, anche se l'ambiente è impostato per il test separatamente.
Se qualcuno sa come impostare più ambienti in L5, lo apprezzo come il modo L4 di creare un file .env.testing
non funziona.
I valori di configurazione nel file ** phpunit.xml ** verranno utilizzati solo da PHPUnit. Qualsiasi comando Artisan utilizzerà ciò che è nel tuo file ** .env **. –