2013-04-25 6 views
1

내 PHP 코드에서/etc/profile에 내 리눅스 시스템 환경 변수에 접근하려고합니다.PHP 환경에서 리눅스 환경 (우분투)

터미널에 "printenv"를 입력하면 변수 (MEMCACHED_1)가 설정되었음을 알 수 있습니다.

내 PHP는 변수를 볼 수 없으며 $ _ENV 배열에도 없으며 getenv 함수를 사용하여 액세스 할 수 있습니다.

내 php.ini 파일에서 나는 variables_order = "EGPCS"을 설정합니다. $ _ENV에 많은 변수가 추가되었지만 MEMCACHED_1은 아직 없습니다.

+0

[Superuser] (http://superuser.com/)에도이 글을 올리면 '$ _ENV'와'/ etc/profile' 도메인 지식의 관점에서 크로스 오버가있을 수 있습니다. – nickhar

+0

저의 작품 'buntu, 무엇이'MEMCACHED_1 = foobar php -r'var_dump ($ _ ENV);입니까? | grep -A 1 MEM' 명령 줄 출력? ' – Wrikken

+0

아무 것도. "grep MEM"이 없다면 다음을 반환합니다 : array (0) { } –

답변

0

무엇을 정확히 php.ini 의미 하시겠습니까? /etc/php5/apache2/php.ini (Apache 모듈에서 실행되는 스크립트에서 사용되는 구성) 및 /etc/php5/cli/php.ini (명령 줄 스크립트에서 사용되는 구성)이 있습니다. 후자는 우분투의 기본 설정으로 variables_order = "GPCS"입니다.

명령 줄에서 코드를 실행하는 경우 /etc/php5/cli/php.ini을 변경하고 variables_order = "EGPCS"을 설정해보십시오.

아파치 모듈을 사용하는 경우, 대신 $_ENV$_SERVER으로 필요한 변수에 액세스하거나 이곳에 주석으로 getenv()를 호출 할 수 있습니다 제안 : http://php.net/manual/en/reserved.variables.environment.php

UPDATE

을 기억해야 할 또 다른 것은 : 아파치 모듈에 의해 시작된 PHP 프로세스는 사용자 www-data (또는 Apache 구성의 변수 User)과 함께 실행됩니다. 그래서, 당신은 또한 올바른 사용자 printenv를 확인해야합니다 :

sudo su -l www-data -c 'printenv' 

을 -이 라인 USER=www-data 또는 이와 유사한 (안 루트가 아닌 로그인을)해야한다. 거기에 MEMCACHED_1이 설정되어 있는지 확인하십시오.

+0

아파치에서 앱을 실행 중이고 /etc/php5/apache2/php.ini 파일에 variables_order = "EGPCS"를 설정했습니다 –

+0
+0

내 PHP는 $ _ENV, $ _SERVER 또는 getenv –

관련 문제