【发布时间】:2012-08-29 23:40:39
【问题描述】:
我有一个在网站的每个页面上运行的 php 函数,它使用全局变量,例如:
$var = "test";
function test() {
global $var;
echo $var;
}
这在直接访问 /anyFile.php 时可以正常工作,但是网站使用 htaccess 文件来重写 url,例如:
RewriteRule ^action/(.*)$ /index.php?action=$1 [L]
当一个url被htaccess重写时,函数不起作用,$var没有设置。
这是怎么回事?我该如何解决?(我需要使用“全局”,否则我需要重新编码很多东西。
【问题讨论】:
-
您的
$var没有在全局上下文中定义,因为可能(那是您没有显示的代码)index.php 从函数(=本地范围)调用操作脚本。跨度> -
发布您的实际代码。 Apache 不能影响 PHP 变量,除非传入
$_GET,除非 register_globals 为 On,它不应该!!!! -
这些行在一起吗? mod_rewrite 不影响 php...一定有其他事情发生或者 $var 正在其他地方被修改。
-
我没有显示的代码是无关紧要的,太长了,不能在这里发布。我用我在问题中发布的确切功能对其进行了测试,它在访问 /index.php?action=anything 时有效,但在访问 /action/anything 时它不起作用(未设置 $var)。我试过$GLOBAL['var'],第二个url也没有设置。
标签: php .htaccess mod-rewrite global-variables