gpt4 book ai didi

php - 环境变量不会从 .htaccess 传递到 PHP

转载 作者:可可西里 更新时间:2023-10-31 22:45:39 25 4
gpt4 key购买 nike

我正在尝试将环境变量从 .htaccess 传递到 PHP。这在我的本地 WAMP 服务器上运行良好,但在托管我的网站的服务器上,它无故失败。

这是我的测试配置:

.htaccess:

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') =

我已经排除的事情:

  1. mod_env 主机未安装/启用。不可能,因为这样 SetEnv 将无法识别,并且在处理 .htaccess 时我会得到 500。

  2. 此目录的 httpd.conf 中的
  3. AllowOverrides 不包括 FileInfo。不可能,因为 Apache 会在遇到 SetEnv 指令时抛出错误“SetEnv not allowed here”,我会再次收到 500。

  4. php.ini 中的
  5. variables_order 不包含“E”。这可以解释 $_ENV 超全局变量是空的(确实如此),但不能解释为什么 getenv() 不返回这些变量的值。

    <
  6. 整个环境都搞砸了。不可能,因为 getenv('PATH')getenv('SERVER_NAME') 仍然返回有效值。

在这一点上,我不知道是什么配置导致了这种情况。

最佳答案

我不认为在 .htaccess 中使用 setenv 通常有效。它是一个 shell 脚本命令(bash、C shell 等)。根据 https://kb.mediatemple.net/questions/36/Using+Environment+Variables+in+PHP#gs,如果您的服务器确实支持 setenv您需要让变量名称以 HTTP_ 开头。

关于php - 环境变量不会从 .htaccess 传递到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com