Festlegen von Umgebungsvariablen für den Zugriff in PHP bei Verwendung von Apache

104

Ich habe eine Linux-Umgebung und eine PHP-Webanwendung, die bedingt basierend auf Umgebungsvariablen ausgeführt wird, die getenvin PHP verwendet werden. Ich muss wissen, wie diese Umgebungsvariablen festgelegt werden müssen, damit die Anwendung ordnungsgemäß funktioniert. Ich bin nicht sicher, wie ich das auf Apache einrichten soll.

Außerdem muss ich in der Lage sein, separate Umgebungsvariablen für jede Domäne separat zu konfigurieren.

Bitte beraten Sie, wie ich dies erreichen kann.

Abishek
quelle

Antworten:

159

Etwas in der Richtung:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>
wroniasty
quelle
3
war nicht in meinem $ _ENV-Array, zum Abrufen des Werts siehe: stackoverflow.com/questions/2378871/…
i_a
Vielen Dank!
Omran Shagooj
4
@i_a können Sie den Wert in PHP mitgetenv('VARIABLE_NAME')
BeetleJuice
In Xampp unter Windows lautet die Datei C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung
@i_a Auf meinem Computer befindet sich der Wert auch in der $_SERVERVariablen.
Robsch
28

Sie können dies auch in einer .htaccess-Datei tun, sofern diese auf der Website aktiviert sind.

SetEnv KOHANA_ENV production

Dies wäre alles, was Sie zu einem .htaccess hinzufügen müssen, um die Umgebungsvariable hinzuzufügen

paquettg
quelle
Unterscheidet sich dies von der Verwendung einer .env-Datei, wie dies bei Laravel der Fall ist? Ist es dadurch weniger sicher? Ich frage dies, weil ich dieselbe Backend-Struktur mit mehreren Frameworks (Laravel, Express, Django usw.) erstelle und einige Entwickler dieser anderen Sprachen sagen, dass es nicht angemessen ist, .env zu verwenden, und dass die "Serverkonfiguration" sein sollte stattdessen verwendet oder über die Befehlszeile im Heroku-Stil
OzzyTheGiant
8

Unglaublich, aber auf httpd 2.2 auf Centos 6.4 funktioniert das.

Exportieren Sie env vars in /etc/sysconfig/httpd

export mydocroot=/var/www/html

Dann mach das einfach ...

<VirtualHost *:80>
  DocumentRoot ${mydocroot}
</VirtualHost>

Dann endlich....

service httpd restart;
danday74
quelle
4

Wenn Ihr Server Ubuntu ist und die Apache-Version 2.4 ist

Serverversion: Apache / 2.4.29 (Ubuntu)

Anschließend exportieren Sie Variablen an der Position "/ etc / apache2 / envvars".

Genau wie in der folgenden Zeile müssen Sie eine zusätzliche Zeile in "/ etc / apache2 / envvars" hinzufügen. Export GOROOT = / usr / local / go

Sachin Raghav
quelle