Apache를 사용할 때 PHP에서 액세스하기위한 환경 변수 설정


104

Linux 환경이 있고 PHP getenv에서 사용하는 환경 변수를 기반으로 조건부로 실행되는 PHP 웹 응용 프로그램이 있습니다 . 응용 프로그램이 올바르게 작동하려면 이러한 환경 변수를 어떻게 설정해야하는지 알아야합니다. Apache에서 이것을 설정하는 방법을 모르겠습니다.

또한 도메인별로 별도의 환경 변수를 구성 할 수 있어야합니다.

이것을 달성하는 방법에 대한 조언을 부탁드립니다.


답변:


159

라인을 따라 뭔가 :

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

3
값을 검색하려면 내 $ _ENV 어레이에 없었습니다. stackoverflow.com/questions/2378871/…
i_a

대단히 감사합니다!
Omran Shagooj

4
@i_a 당신과 PHP의 값에 액세스 할 수 있습니다getenv('VARIABLE_NAME')
비틀

Windows의 xampp에서 파일은 C : \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung

@i_a 내 컴퓨터에서 값은 $_SERVER변수 에서도 찾을 수 있습니다 .
robsch

28

.htaccess 파일에서 웹 사이트에서 활성화 된 것으로 가정하여이 작업을 수행 할 수도 있습니다.

SetEnv KOHANA_ENV production

환경 변수를 추가하기 위해 .htaccess에 추가해야 할 모든 것입니다.


laravel이 수행하는 방식과 같은 .env 파일을 사용하는 것과 다른가요? 이로 인해 보안이 약화됩니까? 여러 프레임 워크 (laravel, express, django 등)로 동일한 백엔드 구조를 구축하고 있으며 다른 언어의 일부 개발자는 .env를 사용하는 것이 적절하지 않으며 "서버 구성"이 대신 사용하거나 명령 줄을 통해 그 일을, Heroku가 스타일
OzzyTheGiant

8

믿을 수 없지만 centos 6.4의 httpd 2.2에서는 작동합니다.

환경 변수 내보내기 /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에 추가 줄을 추가해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.