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.


Antworten:


159

Etwas in der Richtung:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>

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


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;

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.