Wenn man mit PHP-Scripten auf der Kommandozeile arbeitet, kann man normalerweise über das globale $_ENV Array auf die Umgebungsvariablen zufreifen.
Jedoch bietet längst nicht jede PHP-Distribution die gleichen Voraussetzungen. Ist in der php.ini z.B.
variables_order = "GPCS" # (GET, POST, COOKIE, SESSION)
gesetzt (ohne “E”), wird das $_ENV Array nicht befüllt. Folgende Einstellung füllt das $_ENV Array wieder entsprechend:
variables_order = "EGPCS" # (ENV, GET, POST, COOKIE, SESSION)
Für die Verwendung von PHP in Verbindung mit Webservern ist die Standardeinstellung (bei manchen Distributionen) sicherlich nicht ganz falsch: Die Einstellung verhindert dann, dass sämtliche Umgebungsvariablen jedem PHP-Script zum Auslesen zur Verfügung stehen. Daher ist es sinnvoll, PHP für die Kommandozeile eine eigene php.ini mitzugeben:
php -c /etc/php.ini_cli script.php
Debian hat von vornherein eine eigene php.ini (in /etc/php5/cli/php.ini) für das CLI (sehr vorbildlich).
One reply on “PHP: $_ENV leer”
Danke! Auch openSUSE bringt zwar zwei getrennte php.ini-Dateien für Apache und CLI mit, setzt aber in beiden
variables_order = "GPCS"
, so dass$_ENV
stets leer ist. Hat eine Weile gedauert, bis ich das gemerkt hatte…