Установка переменных среды для доступа в PHP при использовании Apache


105

У меня есть среда Linux, и у меня есть веб-приложение PHP, которое условно запускается на основе переменных среды, используемых getenvв PHP. Мне нужно знать, как эти переменные среды должны быть установлены, чтобы приложение работало правильно. Я не уверен, как это настроить на Apache.

Кроме того, мне нужно иметь возможность настраивать отдельные переменные среды для каждого домена отдельно.

Пожалуйста, посоветуйте, как я могу этого добиться.


Ответы:


160

Что-то вроде:

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

3
не было в моем массиве $ _ENV, для получения значения см .: stackoverflow.com/questions/2378871/…
i_a 04

Большое спасибо!
Омран Шагуж

4
@i_a вы можете получить доступ к значению в PHP с помощьюgetenv('VARIABLE_NAME')
BeetleJuice

в xampp в Windows файл будет C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung

@i_a На моей машине значение также можно найти в $_SERVERпеременной.
Робс

28

Вы также можете сделать это в файле .htaccess, если они включены на веб-сайте.

SetEnv KOHANA_ENV production

Было бы все, что вам нужно добавить в .htaccess, чтобы добавить переменную среды


отличается ли это от использования файла .env, например, как это делает laravel? Это делает его менее безопасным? Я спрашиваю об этом, потому что я создаю одну и ту же бэкэнд-структуру с несколькими фреймворками (laravel, express, django и т. Д.), И некоторые разработчики этих других языков говорят, что «не подходит для использования .env и что« конфигурация сервера »должна быть вместо этого или через командную строку, в стиле
героку

8

Невероятно, но на httpd 2.2 и на centos 6.4 это работает.

Экспортировать env vars в /etc/sysconfig/httpd

export mydocroot=/var/www/html

Тогда просто сделай это ...

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

Тогда наконец ....

service httpd restart;

4

Если ваш сервер Ubuntu, а версия Apache - 2.4

Версия сервера: Apache / 2.4.29 (Ubuntu)

Затем вы экспортируете переменные в папку «/ etc / apache2 / envvars».

Как и в этой строке ниже, вам нужно добавить дополнительную строку в "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.