Ustawianie zmiennych środowiskowych do uzyskiwania dostępu w PHP podczas korzystania z Apache

105

Mam środowisko Linux i aplikację internetową PHP, która działa warunkowo w oparciu o zmienne środowiskowe getenvw PHP. Muszę wiedzieć, jak te zmienne środowiskowe muszą być ustawione, aby aplikacja działała poprawnie. Nie jestem pewien, jak to ustawić na Apache.

Muszę też mieć możliwość osobnego konfigurowania zmiennych środowiskowych dla każdej domeny.

Proszę o poradę, jak mogę to osiągnąć.

Abishek
źródło

Odpowiedzi:

160

Coś w tym stylu:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>
wroniasty
źródło
3
nie było w mojej tablicy $ _ENV, w celu odzyskania wartości patrz: stackoverflow.com/questions/2378871/ ...
i_a
Dziękuję Ci bardzo!
Omran Shagooj
4
@i_a możesz uzyskać dostęp do wartości w PHP za pomocągetenv('VARIABLE_NAME')
BeetleJuice,
w xampp w systemie Windows plik będzie C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung
@i_a Na moim komputerze wartość można również znaleźć w $_SERVERzmiennej.
robsch
28

Możesz to również zrobić w pliku .htaccess, zakładając, że są one włączone w witrynie.

SetEnv KOHANA_ENV production

To wszystko, co musisz dodać do .htaccess, aby dodać zmienną środowiskową

paquettg
źródło
czy to różni się od używania pliku .env, na przykład sposobu, w jaki robi to laravel? Czy to w jakikolwiek sposób zmniejsza bezpieczeństwo? Pytam o to, ponieważ buduję tę samą strukturę zaplecza z wieloma frameworkami (laravel, express, django, itp.), A niektórzy programiści tych innych języków twierdzą, że nie nadaje się do używania .env i że „konfiguracja serwera” powinna być zamiast tego, lub robiąc to z linii poleceń, w stylu
heroku
8

Niewiarygodne, ale na httpd 2.2 na centos 6.4 to działa.

Eksportuj zmienne środowiska w formacie /etc/sysconfig/httpd

export mydocroot=/var/www/html

Następnie po prostu zrób to ...

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

W końcu ...

service httpd restart;
danday74
źródło
4

Jeśli twój serwer to Ubuntu, a wersja Apache to 2.4

Wersja serwera: Apache / 2.4.29 (Ubuntu)

Następnie eksportujesz zmienne w lokalizacji „/ etc / apache2 / envvars”.

Tak jak w poniższej linii, musisz dodać dodatkową linię w "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Sachin Raghav
źródło