PHP-und Apache-Umgebungsvariablen
Möchte ich weitergeben eine Umgebungsvariable in linux, apache auf start.
export MYVAR=5
--Definiere ich meine Umgebungsvariablen auf der Kommandozeile
PassEnv MYVAR
--set apache importieren Sie die Variablen in apache-config-Datei
apachectl restart
- wenn ich den apache neu starten, habe ich nicht eine Fehlermeldung erhalten. Jedoch habe ich bemerkt,
dass, wenn ich nicht erstellen Sie die Umgebungsvariable in meinem ersten Schritt, ich bekomme eine Warnmeldung, so muss es sein, hier zu arbeiten
echo $_SERVER['MYVAR']
- ich versuche, den Zugriff auf die Umgebungsvariablen in PHP aber es ist nicht definiert
Ich habe beobachtet, dass, wenn ich versuche, PassEnv Umgebungsvariable, die bereits beendet haben (eine, die ich noch nicht selbst angelegt habe) funktioniert es einwandfrei. Die SetEnv Direktive funktioniert auch einwandfrei.
Ich würde wirklich gerne, um eine Umgebungsvariable für apache-on-the-fly, ohne das schreiben in eine Datei. Hilfe sehr geschätzt.
Ich bin mit CentOS, PHP5 und Apache2.
Dank.
update
es scheint die environment-variable übergeben bekommt, wenn rufe ich den apache-Start direkt mit httpd und nicht apachectl, das ist ein shell-Skript. Ich hätte gedacht, dass der "export" hätte exportiert die variable auf das shell-Skript nicht? Ich bin kein linux-guru, so entschuldigen Sie meinen Mangel an wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, dass die environment-variable übergeben werden, die apache, sollten Sie sicherstellen, dass Sprach-Umgebungsvariable definiert ist, für die Umgebung, in der der apache ausgeführt wird. Das zu tun, ist die einfachste option ist, um eine
export MYVAR=value
Linie zu envvars (sollte sich in /etc/apache2) oder das Skript, das startet apache (/etc/init.d), und fügen Sie Ihre PassEnv MYVAR, wo es wollte in Ihre apache-Konfiguration.Neustart von apache sollten sicherstellen, dass die environment-variable MYVAR übergeben wird. AFAIK werden Sie nicht in der Lage, ändern Sie den Wert des var, während der apache läuft, aber...
Einige relevante info für CentOS : http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0
Sollten Sie Zugriff auf Umgebungsvariablen mit der superglobalen
$_ENV
:$_ENV['MYVAR']
http://www.php.net/manual/en/reserved.variables.environment.php
Update
Variable kann tatsächlich unter
$_SERVER
afterall, wie pro den link unten. Lohnt$_ENV
obwohl.Als pro http://www.php.net/manual/en/reserved.variables.environment.php#97105
Erweitern wimvds' Antwort oben; Sie können ändern von Umgebungsvariablen während der Apache läuft mit der SetEnvIf Modul. Insbesondere die SetEnvIf-Direktive gesagt-Modul.
z.B.
Obigen Beispiel wird die $FOOBAR-Umgebungsvariable auf "etwas", wenn der reguläre Ausdruck entspricht der request-URI (in diesem Fall werden alle URI, die das Wort "foobar"). Sie können definieren, diese in Ihrem host-configuration-Datei (normalerweise in /etc/apache2/sites-available/mywebsite.conf oder so ähnlich).