Problem z detectEnvironment lub App::environment w laravel 4.1?

Niestety w związku z aktualizacją laravel z wersji 4.0 do 4.1 niektóre rzeczy zostały usunięte, między innymi możliwość zdefiniowania środowiska za pomocą domen.

Przykładowy kod działający w laravel 4.0 znajdujący się w pliku bootstrap/start.php


$env = $app->detectEnvironment(array(
    'local' => array('*.dev'),
    'staging' => array('staging.example.com'),
    'production' => array('example.com', 'www.example.com')
));

nie zadziała już w wersji 4.1 gdyż została wycofana ze względów bezpieczeństwa. Jak napisane jest w wyjaśnieniu:

For security reasons, URL domains may no longer be used to detect your application environment. These values are easily spoofable and allow attackers to modify the environment for a request.

zmienną bardzo łatwo podmienić w żądaniu.

Teraz, zamiast nazw hostów podajemy nazwy maszyn które znajdują się w danym środowisku


$env = $app->detectEnvironment(array(
    'local' => array('your-machine-name'),
));

Jak uzyskać nazwę maszyny?

Wystarczy wydać polecenie hostname. O ile w systemach z rodziny unixa i apple jest to oczywiste, o tyle w windowsie niektórzy mogą mieć problem. Rozwiązanie jest proste, wystarczy kliknąć Start > Uruchom > wpisać cmd > zatwierdzić a następnie w konsoli wydać polecenie.

Jak uzyskać wartość zmiennej środowiskowej?

$environment = App::environment();

Więcej szczegółów można znaleźć tutaj.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *