【发布时间】:2017-04-21 03:43:20
【问题描述】:
我正在通过php函数设置一个apache环境变量apache_setenv。
apache_setenv("EXAMPLE_VAR", "Example Value");
但是我在访问.htaccess 中的这个变量时遇到问题,无论如何我都无法在.htaccess 中使用这个环境变量。但我可以通过 php getenv() 访问它。
问题不仅在于通过 php 设置变量,我无法访问 .htaccess 本身设置的环境变量。
我试过了
假设环境变量为www.domain.com。
RewriteEngine On
RewriteCond ^(.*)$ test.php?id=%{ENV:VARIABLE} [L]
&
RewriteEngine On
RewriteCond %{ENV:VARIABLE} ^www.(.+)
RewriteRule ^ test.php?id=%1 [L]
以及其他类似的测试,以验证 env 变量是否已设置并正常运行。
Mod_env 和 mod_rewrite 已开启。
【问题讨论】:
-
一个有趣的问题++
-
父进程 (Apache) 无法访问在子进程 (PHP) 中更改或设置的环境变量。
-
PHP 模块在 mod_rewrite 模块完成运行后被调用,因此在重写规则中看不到通过 PHP 进行的更改。
-
@anubhava @OlafDietsche 但是即使在
.htaccess中设置它们后我也遇到了问题,我无法掌握.htaccess中的环境变量的概念。如果我无法在.htaccess中访问它们,这里服务的 apache_setenv 是什么? -
apache_setenv是 PHP 函数。您如何在 .htaccess 中设置变量?