2014-06-06 12 views
22

Ho una nuova installazione di Laravel. Durante l'esecuzione di viene visualizzato il messaggio Application In Production! Do you really wish to run this command?'Laravel 4.2 afferma che la mia applicazione è in produzione. Come lo spengo?

So che questo è un aggiornamento in 4.2, tuttavia non riesco a capire come spegnerlo.

ho trovato nella fonte che proviene da Illuminate\Console\ConfirmableTrait e corre se questo test viene superato se: if ($this->getLaravel()->environment() == 'production')

Io non sono sicuro perché pensa che io sia in produzione. Non ho mai configurato alcun ambiente. Questo è il rilevamento dell'ambiente predefinito, che sto ancora utilizzando attualmente.

Inoltre, se ho impostato un ambiente di produzione a un nome host che non è la mia macchina, ho ancora lo stesso problema.

+2

Per utenti vagabondi: il nome host non è il PC ma la macchina virtuale, ad esempio: vagrant-ubuntu-trusty-64. L'ho trovato con echo gethostname(); morire; –

risposta

33

basta specificare un nome di computer per l'host che corrisponde a un determinato ambiente, quindi laravel rileva automaticamente l'ambiente (di default è production), ad esempio:

$env = $app->detectEnvironment(array(

    //'local' => array('homestead'), 

    'local' => array('*.dev', gethostname()), 
    'production' => array('*.com', '*.net', 'www.somedomain.com') 
)); 

Read the documentation e this answer pure.

+1

Va bene, è stato risolto. Grazie. Devo dire però che ho cambiato "locale" in "sviluppo" (che sono la stessa cosa nel mio caso) perché stavo ricevendo un errore "accesso negato" homestead @ "localhost", il che è strano poiché il mio utente è root , non fattoria. –

+0

Ha senso, benvenuto :-) –

+0

Quale file stai modificando qui? – surfer190

7

Impostare il proprio ambiente per qualcosa di diverso dalla produzione è Il modo giusto. See the accepted answer.

Ma, se siete alla ricerca di una soluzione rapida è possibile utilizzare (in ambienti Unix,):

yes | php artisan migrate:refresh 

Tutto questo non fa altro che inviare un flusso di "y" per il programma, che agisce come se avessi premuto "y" quando richiesto.

Trovo che sia un po 'meglio di --force, poiché non tutti i comandi artistici supportano la forza.

+0

Piping 'yes' ha annullato immediatamente il comando per me. – IIllIIll

+0

@Arcrammer Curioso, mi chiedo perché sia ​​così. In ogni caso, provate questo codice: '$ app-> detectEnvironment(); $ env = getenv ('ENV')?: 'production'; 'quindi usa questa riga di comando:' ENV = php artisan migrate local: refresh'. Il punto di base è che L4.2 richiede la chiamata a detectEnvironment, ma dopo puoi impostare '$ env' in base alle tue preferenze. – bishop

+0

Non ho questo problema. Stavo passando! grazie aha, però. – IIllIIll

0

Speriamo che questo aiuti qualcun altro. Improvvisamente ho avuto un problema in cui il mio sito dev stavo costruendo smesso di collegare il detto DB:

PDOException SQLSTATE[HY000] [1049] Unknown database 'forge' failed 

ero anche ricevendo errori come il PO quando si cerca di eseguire artisan migrate:refresh ecc, l'errore è stato affermando che ero in produzione ecc. ecc.

Dopo molti grattacapi (!) ho trovato che il mio valore di nome host impostato all'interno di /bootstrap/start.php era errato, perché il mio nome host era cambiato sul mio MacBook Pro !? Non ho idea di come sia cambiato da qualcosa come RobMacbookPro2.local a RobMacbookPro.local. Questo significava che ricadde alla produzione caricando il file non corretto database.php con lo standard DB = fucina (che era sbagliato)

controllare questa guida: http://laravel.com/docs/4.2/configuration

prestare particolare attenzione al codice:

<?php 

$env = $app->detectEnvironment(array(

    'local' => array('your-machine-name'), 

)); 

Su un Mac e probabilmente su Linux? puoi determinare il tuo nome host digitando # hostname nel terminale.

Speranza che salva qualcuno un po 'di tempo!

1

Nel caso in cui qualcuno si sia imbattuto in questa domanda durante la ricerca di un problema simile in un'installazione lumen, suggerirei di controllare il file .env e aggiungere APP_ENV=local se non è già lì. Ha risolto il mio problema.

Problemi correlati