PHP getenv() 在 Windows 中只返回几个参数

PHP getenv() returning only few parameters in Windows

我最近将生产系统上的网络服务器环境更改为 Apache2.4/mod_fcgid 2.3.9。重新启动 Apache 后,我意识到依赖于 PHP getenv() 的脚本已损坏。进一步检查,我可以使用 getenv("PATH") 检索 Windows PATH,但不能检索由我的应用程序安装设置的其他几个变量,甚至不能检索其他一些变量(例如 PSModulePath)。

使用 phpinfo(),我看不到这些 Windows env 变量,因为当我 运行 PHP 作为 apache 模块 (mod_php) .

我已经在 Serverfault (https://serverfault.com/questions/675736/apache-2-4-with-mod-fcgid-getenv-not-working-in-php) 列出了我的 httpd.conf 的其他细节,这个问题的详细版本尚未得到解答。

基本上,当 mod_fcgid 上的 运行 时,php getenv() 应该只检索某些变量(可能是那些最初与操作系统一起安装的变量)的根本原因系统,我猜),但忽略那些随后由其他应用程序设置的?

我已经搜寻 google 将近 48 小时了,但没有找到任何有形的东西。任何人都可以帮助提供见解。

谢谢。

重述问题。在我决定将默认的 运行 PHP 更改为 mod_fcgid 作为 apache 模块之前,我没有遇到任何问题(在 WAMP 下)。在此之后,getenv() 调用我的 PHP 代码,为大多数 Windows 环境变量返回 NULL(即使我一切换回原始 [=14,它们就可以正常工作) =]).

经过几天的磕磕绊绊,这就是为我解决这个问题的方法。为每个您希望传递给 PHP:

的缺失变量添加 PassEnv
PassEnv Variable1
PassEnv Variable2
PassEnv Variable3

然后,当然是重启 Apache 服务器。

仍然很奇怪,这种任意的差异竟然存在,而且在 Apache 或 fcgid 文档中的捕获如此糟糕!