2015-04-21 12 views
5

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.

+1

I valori di configurazione nel file ** phpunit.xml ** verranno utilizzati solo da PHPUnit. Qualsiasi comando Artisan utilizzerà ciò che è nel tuo file ** .env **. –

risposta

-2

Definisci le tue variabili ambientali nel tuo file .env. Per esempio:

DB_HOST=localhost 
DB_DATABASE=database_name 
DB_USERNAME=homestead 
DB_PASSWORD=secret 

Quindi è possibile accedere a queste variabili utilizzando

env('DB_HOST') 
+0

La domanda riguarda le variabili d'ambiente specifiche del test. La riga 2 della domanda afferma che esiste un file '.env'. – harryg

1

Una soluzione rapida per la domanda iniziale, solo il test caso l'ambiente, è quello di chiamare $this->artisan('migrate'); da tests/TestCase.php classe, in modo otterrà i valori di configurazione del database definiti in phpunit.xml ed eseguirà la migrazione.

+1

In effetti sembra la soluzione migliore. In realtà è quello che ho finito per fare. – harryg

Problemi correlati