
httpd.conf에 환경 변수를 설정했습니다.
SetEnv http_proxy "http://localhost:3128"
하지만 다음을 사용하여 PHP에서 이 변수를 가져올 수 없습니다 getenv
.
<?php
echo getenv("http_proxy");
phpinfo();
print_r($_ENV);
getenv
빈 값을 반환하고 print_r($_ENV)
다음 내용을 표시합니다.
Array ( [LANG] => C [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [NOTIFY_SOCKET] => /run/systemd/notify )
흥미롭게도 환경 변수는 출력의 "Apache Environment" 섹션 아래에 표시됩니다 phpinfo
.
(내 시스템은 아파치 2.4/php 5.6/CentOS7입니다)
답변1
PHP5.6에는 벌이 있습니다지원되지 않는 3년 동안지금. 다음으로 업그레이드하세요.현재 버전지금! 그런 다음 다음을 변경합니다.
사용 SetEnv HTTP_PROXY "http://localhost:3128"
- 환경 변수는 대소문자를 구분합니다.
getenv(varname: "HTTP_PROXY", local_only: true)
서버 환경에서 변수를 요청하는 데 사용됩니다 .
로컬 변수만 수신하도록 명시적으로 지정하지 않으면 대신 fastcgi에서 결과를 얻습니다. 따라서 HTTP_
그로 시작하는 varname의 경우 대신안전하지 않은 코드를 위험하게 혼동헤더가 있고조용히 폐기됨. SAPI 동작을 선택 해제하는 것은getenv() 함수 설명에 문서화되어 있습니다.:
PHP가 Fast CGI와 같은 SAPI에서 실행 중인 경우, 동일한 이름의 로컬 환경 변수를 설정하기 위해 putenv()를 사용했더라도 이 함수는 항상 SAPI에서 설정한 환경 변수의 값을 반환합니다. 로컬로 설정된 환경 변수의 값을 반환하려면 local_only 매개변수를 사용합니다.