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 文档中的捕获如此糟糕!
我最近将生产系统上的网络服务器环境更改为 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 文档中的捕获如此糟糕!