Nie ma sposobu, aby ustawić zmienne środowiskowe z linii poleceń specjalnie dla realizacji scenariusza przekazując opcje binarnego PHP.
Masz kilka opcji:
- ustawić zmienną globalnie w systemie.
- Ustaw zmienną w wierszu poleceń przed wywołaniem skryptu. Będzie to utrzymywać się w środowisku po zakończeniu wykonywania skryptu, czego możesz nie chcieć.
- Zawiń skrypt PHP w innym skrypcie, umożliwiając utworzenie tymczasowej zmiennej, która istnieje tylko przez czas trwania skryptu.
- Użyj opcji wiersza poleceń zamiast zmiennej środowiskowej.
Dwie ostatnie opcje są prawdopodobnie najczystszym sposobem zrobienia tego, ponieważ utworzona zmienna istnieje tylko dla czasu wykonywania skryptu.
Realizacja opcji 1 zależy od systemu.
Wdrożenie opcji 2 zależy również od systemu - w systemie Windows można wykonać set APPLICATION_ENV=staging&& php script.php
, a na * nix będzie to export APPLICATION_ENV='staging' && php script.php
.
Jeśli wybierzesz opcję 3, możesz mieć ochotę na skrypt powłoki, ale to nie jest przenośne (potrzebujesz pliku wsadowego dla systemu Windows i skryptu powłoki dla środowisk * nix. d proponuję napisać prosty skrypt PHP otoki, coś takiego:.
<?php
putenv('APPLICATION_ENV=staging');
include('script.php');
to pozwala opuścić swój skrypt docelową na niezmienionym poziomie i ustawić zmienną środowiskową dla sesji skryptu tylko
bardziej skomplikowany skrypt otoki można łatwo utworzyć, co pozwoliłoby określić zmienne w wierszu poleceń, a nawet dynamicznie określić skrypt t które powinno zostać wykonane po ustawieniu tych zmiennych.
Wariant 4 może być realizowane za pomocą zmiennej :
<?php
$applicationEnv = $argv[1];
// rest of you script
...i wywołać skrypt jak:
php script.php staging
Jednak wydaje mi się, że to wydaje się być wskazaniem do skryptu, który środowisko jest uruchomiony w (inscenizacja, dev, na żywo, etc) - w takim przypadku może być najprościej ustawić zmienną dla całego serwera i zmienić jej nazwę, aby zapobiec kolizji ze zmiennymi, które mogą ustawiać inne aplikacje. W ten sposób możesz po prostu wywołać skrypt i nie musisz się tym martwić. Zakłada się, że środowisko pomostowe działa na innej maszynie niż na żywo (co powinno być).
jest przestrzeń pomiędzy -d i APPLICATION_ENV literówka ? Spróbuj umieścić putenv ("APPLICATION_ENV = inscenizacja"); in script.php – Tdelang
Czy chcesz ustawić niektóre zmienne w skrypcie lub uzyskać dostęp do zmiennej środowiskowej z poziomu skryptu? Jeśli to drugie, z jakiego kodu korzystałeś, aby uzyskać do niego dostęp? – DaveRandom
W zmiennej skryptowej jest pobierana z funkcją 'getenv()'. – Wiktor