
我在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 取得結果,因此對於以HTTP_
該開頭的 varname 可以改為危險地混淆不安全代碼帶有標題並且是默默地丟棄。選擇退出 SAPI 行為是記錄在 getenv() 函數描述中:
如果 PHP 運行在 SAPI(例如 Fast CGI)中,則函數將始終傳回 SAPI 設定的環境變數的值,即使已使用 putenv() 設定同名的本機環境變數。使用 local_only 參數傳回本地設定的環境變數的值。