2015-02-25 13 views
19

Po uruchomieniu $ php artisan env otrzymuję;Laravel 5 Jak przejść z trybu produkcji

Current application environment: production 

Jak mogę to zmienić na rozwój lub coś podobnego? Więc widzę błędy. Przeczytałem a lot of the documentation, ale początkujący nie jest łatwy do zrozumienia. Nie mam naprawdę doświadczenia z konfiguracją serwera.

Jestem pewien, że istnieje "inteligentny" sposób, aby to zrobić, ale wszystko, co mnie interesuje, na razie ręcznie zmienia środowisko. Jak mam to zrobic?

Odpowiedz

31

Laravel 5 pobiera zmienne związane z otoczeniem z pliku .env znajdującego się w katalogu głównym projektu. Trzeba tylko ustawić APP_ENV na co chcesz, na przykład:

APP_ENV=development 

ten służy do identyfikacji bieżącego otoczenie. Jeśli chcesz wyświetlać błędy, trzeba włączyć tryb debugowania w tym samym pliku:

APP_DEBUG=true 

Rola pliku .env to pozwala mieć różne ustawienia w zależności od maszyna używasz aplikacji . Tak więc na serwerze produkcyjnym ustawienia pliku .env będą inne niż w lokalnym środowisku programistycznym.

+0

Więc każdy serwer/środowisko ma swój własny plik '.env'? Czy to prawda? – mikelovelyuk

+6

Masz jeden plik '.env', ale zawartość może się różnić na każdym komputerze, na którym uruchomiona jest aplikacja. Na przykład na twoim lokalnym komputerze miałbyś 'APP_ENV = development' i' APP_DEBUG = true', ale na twoim serwerze produkcyjnym wartościami byłyby 'APP_ENV = production' i' APP_DEBUG = false'. – Bogdan

+0

Więc tak, każdy serwer/środowisko ma swój własny plik '.env'. – Bogdan

11

Laravel 5 używa pliku .env do konfiguracji aplikacji. .env nie powinien być zatwierdzony na twoim repozytorium, takim jak github lub bitbucket. W lokalnym środowisku Twój .env będzie wyglądać następująco:

# .env 
APP_ENV=local 

dla serwera produkcyjnego, może mieć następujące config:

# .env 
APP_ENV=production 
-4

W laravel domyślne środowisko zawsze jest produkcja.

Co trzeba zrobić, to podać poprawną nazwę hosta w bootstrap/start.php dla swoich środowisk np .:

/* 
|-------------------------------------------------------------------------- 
| 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

Pytanie dotyczy Laravel 5. Twoje rozwiązanie jest dla Laravel 4. W L5 nie ma już pliku 'bootstrap/start.php'. – Bogdan

+1

Dzięki za komentarz. Nie zdawałem sobie z tego sprawy. –

3

Co można też spojrzeć na to narażony metoda Application->loadEnvironmentFrom($file)

Musiałem jeden wniosek do uruchamiania w wielu poddomen.

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

nie zapomnij, aby uruchomić polecenie php artisan config:clear po dokonaniu zmian w pliku .env: tak w bootstrap/app.php ja coś takiego dodaje. Zrób to ponownie php artisan env, która zwróci poprawną wersję.

+0

To uratowało mój dzień (dni)! Nie mogłem się zorientować, co jest nie tak. Pozwoliłam wszystkim na wszystko, ale zobaczyłem ten komentarz. Dzięki!! – tprj29

+0

Uratowałem też mój dzień. Dzięki, Sergio. – kR105