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ąć.


Odpowiedzi:


160

Coś w tym stylu:

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

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ą


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;

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.