Categories
Linux

PHP: $_ENV leer

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…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.