我在 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 )
有趣的是,环境变量显示在phpinfo
输出的“Apache 环境”部分下。
(我的系统是apache 2.4/php 5.6/CentOS7)
PHP 5.6 已经不受支持 3 年了。立即升级到当前版本!然后,更改以下内容:
使用
SetEnv HTTP_PROXY "http://localhost:3128"
- 环境变量区分大小写。用于
getenv(varname: "HTTP_PROXY", local_only: true)
从服务器环境请求变量。如果您没有明确指定只接收局部变量,您会从 fastcgi 获取结果,因此对于以它开头的变量名,
HTTP_
可能会危险地将不安全代码与标头混淆,并被默默地丢弃。选择退出 SAPI 行为记录在 getenv() 函数描述中: