我正在尝试将环境变量从 .htaccess 传递给 PHP。这在我的本地 WAMP 服务器上工作得很好,但在我的网站托管的服务器上,它会无缘无故地失败。
这是我的测试配置:
.ht 访问:
SetEnv TEST_VARIABLE test_value
测试.php:
<pre>
getenv('TEST_VARIABLE') = <?php print getenv('TEST_VARIABLE'); ?>
getenv('REDIRECT_TEST_VARIABLE') = <?php print getenv('REDIRECT_TEST_VARIABLE'); ?>
</pre>
在我的本地服务器上,正确获取 test.php 会返回:
getenv('TEST_VARIABLE') = test_value
getenv('REDIRECT_TEST_VARIABLE') =
但在生产服务器上,它返回:
getenv('TEST_VARIABLE') =
getenv('REDIRECT_TEST_VARIABLE') =
我已经排除的事情:
mod_env
主机未安装/启用。不能,因为这样SetEnv
就不会被识别,并且在处理 .htaccess 时我会得到 500。AllowOverrides
这个目录的 inhttpd.conf
不包括FileInfo
. 不能,因为 Apache 在遇到SetEnv
指令时会抛出错误“SetEnv not allowed here”,我会再次得到 500。variables_order
在 php.ini 中不包括“E”。这可以解释$_ENV
超全局为空(它是),但不能解释为什么getenv()
不返回这些变量的值。整个环境都搞砸了。不能,因为
getenv('PATH')
并且getenv('SERVER_NAME')
仍然返回有效值。
在这一点上,我不知道什么配置可能导致这种情况。