Es stellte sich heraus, dass es hier zwei Probleme gab:
1. $_ENVwird nur ausgefüllt, wenn php.ini dies zulässt , was standardmäßig nicht der Fall zu sein scheint, zumindest nicht in der Standardinstallation des WAMP-Servers .
; This directive determines which super global arrays are registered when PHP
; starts up. If the register_globals directive is enabled, it also determines
; what order variables are populated into the global space. G,P,C,E & S are
; abbreviations for the following respective super globals: GET, POST, COOKIE,
; ENV and SERVER. There is a performance penalty paid for the registration of
; these arrays and because ENV is not as commonly used as the others, ENV is
; is not recommended on productions servers. You can still get access to
; the environment variables through getenv() should you need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http:
variables_order = "GPCS"
Wenn ich den variables_orderRücken auf setze EGPCS, $_ENVist nicht mehr leer.
2. Wenn Sie SetEnvin Ihrem verwenden .htaccess, endet es in $_SERVER, nicht in$_ENV , was ich sagen muss, ist ein bisschen verwirrend, wenn es benannt wird SetEnv...
SetEnv ENV dev
SetEnv BASE /ssl/
var_dump($_SERVER['ENV'], $_SERVER['BASE']);
3. Die getenvFunktion funktioniert immer und wird von der PHP-Einstellung für $ _ENV nicht beeinflusst. Außerdem scheint sie dies unabhängig von Groß- und Kleinschreibung zu tun, was nützlich sein könnte.
var_dump(getenv('os'), getenv('env'));
$_SERVERvar gesendet . Ich würde meine Stimme für die Verwendung abgeben, beigetenv()der beide, soweit ich weiß, nur zwischen Groß- und Kleinschreibung unterscheiden.