
Ich habe eine Umgebungsvariable in httpd.conf festgelegt:
SetEnv http_proxy "http://localhost:3128"
Aber ich kann diese Variable in PHP nicht mit folgendem abrufen getenv
:
<?php
echo getenv("http_proxy");
phpinfo();
print_r($_ENV);
getenv
gibt leer zurück und print_r($_ENV)
zeigt den folgenden Inhalt:
Array ( [LANG] => C [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [NOTIFY_SOCKET] => /run/systemd/notify )
Interessanterweise wird die Umgebungsvariable im Abschnitt „Apache-Umgebung“ der phpinfo
Ausgabe angezeigt.
(mein System ist Apache 2.4/PHP 5.6/CentOS7)
Antwort1
PHP5.6 hat Bienenicht unterstützt für 3 Jahrejetzt. Upgrade auf eineaktuelle Versionjetzt! Ändern Sie dann Folgendes:
Verwendung SetEnv HTTP_PROXY "http://localhost:3128"
: Bei Umgebungsvariablen muss die Groß-/Kleinschreibung beachtet werden.
Wird verwendet getenv(varname: "HTTP_PROXY", local_only: true)
, um eine Variable aus der Serverumgebung anzufordern.
Wenn Sie nicht explizit angeben, nur lokale Variablen zu empfangen, erhalten Sie stattdessen Ergebnisse von FastCGI. Für einen Varname, der mit HTTP_
diesem beginnt, könnte stattdessengefährlich verwirren unsicheren Codemit Headern und iststillschweigend verworfen. Das Deaktivieren des SAPI-Verhaltens istdokumentiert in der Funktionsbeschreibung von getenv():
Wenn PHP in einem SAPI wie Fast CGI ausgeführt wird, gibt diese Funktion immer den Wert einer vom SAPI festgelegten Umgebungsvariable zurück, selbst wenn putenv() zum Festlegen einer lokalen Umgebungsvariable mit demselben Namen verwendet wurde. Verwenden Sie den Parameter local_only, um den Wert lokal festgelegter Umgebungsvariablen zurückzugeben.