Frage

Ich will nur meine Apache einige meiner vordefinierten Umgebung registrieren, so dass ich es mit getenv Funktion in PHP abrufen kann. Wie kann ich das machen? Ich habe versucht /etc/profile.d/foo.sh mit Export FOO = / bar / baz root und neu gestartet Apache hinzufügen.

War es hilfreich?

Lösung

Umgebungsvariablen werden durch Prozesse in Unix geerbt. Die Dateien in /etc/profile.d sind nur (in dem aktuell Shell, nicht in einer Subshell) ausgeführt wird, wenn Sie sich anmelden. Sie einfach den Wert dort zu ändern und dann einen Prozess neu gestartet wird nicht die Umwelt aktualisieren.

Mögliche Fixes:

  • ausloggen / log in, dann starten Sie Apache
  • Quelle der Datei: # . /etc/profile.d/foo.sh, starten Sie Apache
  • Quelle die Datei im Apache-Init-Skript

Sie müssen auch sicherstellen, dass /etc/profile.d/ bezogen wird, wenn Apache von init gestartet wird, anstatt sich selbst.

Die beste Fix könnte auch von der Verteilung ab, die Sie verwenden, weil sie unterschiedliche Systeme für die Konfiguration verwenden.

Andere Tipps

Sie können mit SetEnv in Ihren Konfigurationsdateien ( /etc/httpd/conf.d/*.conf, .htaccess ...). Zusätzlich sollten Sie in der Lage sein, sie zu definieren, die in / etc / sysconfig / httpd (auf RPM-basierten distribs) und Export sie. (Anmerkung: nicht getestet)

Hinweis: es würde mich nicht überraschen, wenn einige Distributionen ziemlich hart versucht, so viel wie möglich zu verbergen, so weit wie Systemkonfiguration betrifft, von einem öffentlich zugänglichen Dienst wie Apache. Und wenn sie es nicht tun, könnten sie tun dies in einer zukünftigen Version starten. Daher rate ich Ihnen, dies ausdrücklich zu tun. Wenn Sie eine solche Einstellung zwischen Apache und Ihre Schalen teilen müssen, könnten Sie versuchen Sourcing /etc/profile.d/yourprofile.sh von / etc / sysconfig / httpd

Apache-Konfigurationsdateien können Sie Umgebungsvariablen auf pro Website einzustellen.

Also, wenn Ihr Webserver Seiten von zwei logischen Websites dient, können Sie die gleiche Umgebungsvariable unterschiedlich für jeden Standort gesetzt und somit erhalten Sie Ihre PHP anders reagieren zu können.

Siehe

Apache mod_env für Details:

Wenn Sie env für Apache Vars nur, was für mich gearbeitet wurde die Bearbeitung der /etc/apache2/envvars und Neustart von Apache. Ich habe diese Einstellungen:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top