我在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 环境”部分下phpinfo
。
(我的系统是 apache 2.4/php 5.6/CentOS7)
答案1
PHP5.6 已不支持 3年现在。升级到当前版本现在!然后,更改以下内容:
使用SetEnv HTTP_PROXY "http://localhost:3128"
-环境变量区分大小写。
用于getenv(varname: "HTTP_PROXY", local_only: true)
从服务器环境请求变量。
如果你没有明确指定只接收局部变量,那么你将从 fastcgi 获取结果,因此对于以此开头的 varnameHTTP_
可以危险地混淆不安全的代码带有标题并且默默丢弃。选择退出 SAPI 行为是getenv() 函数描述中记录:
如果 PHP 在 SAPI(如 Fast CGI)中运行,则此函数将始终返回由 SAPI 设置的环境变量的值,即使已使用 putenv() 设置了同名的本地环境变量。使用 local_only 参数返回本地设置的环境变量的值。