2015-02-25 8 views
19

Quando corro $ php artisan env Ottengo;Laravel 5 Come passare dalla modalità Produzione

Current application environment: production 

Come posso modificare lo sviluppo o qualcosa di simile? Quindi posso vedere gli errori .. Ho letto a lot of the documentation ma non è per niente facile da capire per un principiante. Non ho esperienza di configurazione del server, davvero.

Sono sicuro che c'è un modo "intelligente" per farlo, ma tutto quello che mi interessa, per ora, è cambiare manualmente l'ambiente. Come faccio a fare questo?

risposta

31

Laravel 5 recupera le variabili relative all'ambiente dal file .env situato nella radice del progetto. Hai solo bisogno di impostare APP_ENV a quello che vuoi, per esempio:

APP_ENV=development 

Questo viene utilizzato per identificare l'ambiente corrente. Se si desidera visualizzare gli errori, è necessario abilitare la modalità di debug nello stesso file:

APP_DEBUG=true 

Il ruolo del file .env è quello di consentire di avere diverse impostazioni a seconda di quale macchina si sta eseguendo l'applicazione . Quindi sul tuo server di produzione, le impostazioni del file .env sarebbero diverse dall'ambiente di sviluppo locale.

+0

Quindi ogni server/ambiente ha il proprio file '.env'? È giusto? – mikelovelyuk

+6

Si ha un file '.env', ma il contenuto può differire su ogni macchina su cui si esegue l'applicazione. Per esempio sul tuo computer locale avresti 'APP_ENV = development' e' APP_DEBUG = true', ma sul tuo server di produzione i valori sarebbero 'APP_ENV = production' e' APP_DEBUG = false'. – Bogdan

+0

Quindi sì, ogni server/ambiente ha il proprio file '.env'. – Bogdan

11

Laravel 5 utilizza il file .env per configurare l'app. .env non dovrebbe essere eseguito sul repository, come github o bitbucket. Sul vostro ambiente locale vostro .env sarà simile al seguente:

# .env 
APP_ENV=local 

Per il vostro server di produzione, si potrebbe avere la seguente configurazione:

# .env 
APP_ENV=production 
-4

Nel laravel l'ambiente di default è sempre la produzione.

Quello che dovete fare è specificare corretto nome host nel bootstrap/start.php per i vostri ambienti ad es .:

/* 
|-------------------------------------------------------------------------- 
| Detect The Application Environment 
|-------------------------------------------------------------------------- 
| 
| Laravel takes a dead simple approach to your application environments 
| so you can just specify a machine name for the host that matches a 
| given environment, then we will automatically detect it for you. 
| 
*/ 

$env = $app->detectEnvironment(array(
    'local' => array('homestead'), 
    'profile_1' => array('hostname_for_profile_1') 
)); 
+3

La domanda è per Laravel 5. La tua soluzione è per Laravel 4. In L5 non c'è più il file 'bootstrap/start.php'. – Bogdan

+1

Grazie per il tuo commento. Non me ne sono reso conto. –

3

Cosa si potrebbe anche avere uno sguardo è il metodo esposto Application->loadEnvironmentFrom($file)

avevo bisogno di una sola applicazione eseguire su più sottodomini. Quindi, in bootstrap/app.php ho aggiunto qualcosa del tipo:

$envFile = '.env'; 
// change $envFile conditionally here 
$app->loadEnvironmentFrom($envFile); 
5

Non dimenticare di eseguire il comando php artisan config:clear dopo aver apportato le modifiche al file .env. Fatto questo ancora php artisan env, che restituirà la versione corretta.

+0

Questo mi ha salvato il giorno/i! Non riuscivo a capire cosa c'era che non andava. Permessi tutto ma poi ho visto questo commento. Grazie!! – tprj29

+0

Ho salvato anche la mia giornata. Grazie, Sergio. – kR105