PHP- und Apache-Umgebungsvariablen

8

Ich möchte beim Start eine Umgebungsvariable in Linux an Apache übergeben.

export MYVAR = 5 - Ich definiere meine Umgebungsvariable in der Befehlszeile

PassEnv MYVAR --Set Apache, um die Variable in Apache-Konfigurationsdatei zu importieren

apachectl Neustart - Wenn ich Apache neu starte, erhalte ich keine Fehlermeldung. Allerdings habe ich es bemerkt Wenn ich die Umgebungsvariable in meinem ersten Schritt nicht erstelle, bekomme ich eine Warnmeldung, also muss hier gearbeitet werden

echo $ _SERVER ['MYVAR'] - Ich versuche auf die Umgebungsvariable in PHP zuzugreifen, aber es ist nicht definiert

Ich habe beobachtet, dass wenn ich versuche, eine Environment-Variable zu übergeben, die bereits existiert (eine, die ich selbst nicht erstellt habe), funktioniert es gut. Die SetEnv-Direktive funktioniert auch gut.

Ich möchte eine Umgebungsvariable wirklich schnell an Apache übergeben, ohne sie in eine Datei zu schreiben. Hilfe sehr geschätzt.

Ich benutze CentOS, PHP5 und Apache2.

Danke.

aktualisieren Es scheint, dass die Umgebungsvariable übergeben wird, wenn ich den Apache-Start direkt mit httpd aufrufen und nicht apachectl verwenden, was ein Shell-Skript ist. Ich hätte gedacht, dass der "Export" die Variable in das Shell-Skript exportiert hätte nein? Ich bin kein Linux-Guru, also entschuldige meinen Mangel an Wissen.

    
Simon 31.05.2010, 02:46
quelle

3 Antworten

10

Wenn Sie möchten, dass die Umgebungsvariable an Apache übergeben wird, sollten Sie sicherstellen, dass diese Umgebungsvariable für die Umgebung definiert ist, in der der Apache ausgeführt wird. Am einfachsten können Sie dazu eine export MYVAR=value -Zeile hinzufügen envvars (sollte in / etc / apache2 liegen) oder das Skript, das Apache startet (in /etc/init.d), und fügen Sie Ihr PassEnv MYVAR dort hinzu, wo es in Ihrer Apache-Konfiguration gewünscht wird.

Beim Neustart von Apache sollte sichergestellt werden, dass die Umgebungsvariable MYVAR übergeben wird. AFAIK Sie können den Wert dieser Var nicht ändern, während der Apache läuft ...

Einige relevante Informationen für CentOS: Ссылка

    
wimvds 31.05.2010 08:57
quelle
3

Sie sollten auf Umgebungsvariablen mit dem Superglobal $_ENV zugreifen:

$_ENV['MYVAR']

Ссылка

Aktualisieren

Ihre Variable kann tatsächlich unter $_SERVER afterall sein, wie im nachfolgenden Link angegeben. Überprüfen Sie $_ENV though.

Gemäß Ссылка

    
Adam Hopkinson 01.06.2010 14:24
quelle
1

Um auf die Antwort von wimvds oben zu erweitern; Sie können Umgebungsvariablen ändern, während Apache mit dem Modul SetEnvIf ausgeführt wird. Insbesondere die SetEnvIf-Direktive dieses Moduls.

z.B.

%Vor%

Das obige Beispiel setzt die Umgebungsvariable $ FOOBAR auf "irgendwas", wenn die Regex mit dem Anforderungs-URI übereinstimmt (in diesem Fall ein URI mit dem Wort "foobar"). Sie können dies in der Konfigurationsdatei Ihres Hosts definieren (normalerweise in /etc/apache2/sites-available/mywebsite.conf oder etwas Ähnlichem).

    
Wigglytuff 02.06.2015 14:37
quelle

Tags und Links