Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mod_rewrite时,PHP全局变量不起作用_Php_.htaccess_Mod Rewrite_Global Variables - Fatal编程技术网

使用mod_rewrite时,PHP全局变量不起作用

使用mod_rewrite时,PHP全局变量不起作用,php,.htaccess,mod-rewrite,global-variables,Php,.htaccess,Mod Rewrite,Global Variables,可能重复: 我有一个php函数,可以在网站的每个页面上运行,它使用一个全局变量,例如: $var = "test"; function test() { global $var; echo $var; } 当直接访问/anyFile.php时,这可以正常工作,但网站使用htaccess文件重写URL,例如: RewriteRule ^action/(.*)$ /index.php?action=$1 [L] 当htaccess重写url时,函数不起作用,$var未设置 会发

可能重复:

我有一个php函数,可以在网站的每个页面上运行,它使用一个全局变量,例如:

$var = "test";
function test() {
    global $var;
    echo $var;
}
当直接访问/anyFile.php时,这可以正常工作,但网站使用htaccess文件重写URL,例如:

RewriteRule ^action/(.*)$ /index.php?action=$1 [L]
当htaccess重写url时,函数不起作用,$var未设置

会发生什么情况?我如何修复?我需要使用global,否则我需要重新编码很多东西。

您需要使用[QSA,L]而不是[L]:

QSA代表,并将查询字符串转发到?在PHP脚本的url中

顺便说一句,您不应该使用从PHP5.3起就已弃用的和从PHP5.4起已删除的,而应该使用$\u GET

--编辑--

根据下面的评论,您无法修改.htaccess,您运气不好。唯一的解决方案是解析请求URI中的查询字符串,并像使用$\u GET superglobal一样使用该字符串:

$queryString=parse\u url$\u SERVER['REQUEST\u URI'],PHP\u url\u QUERY; parse_str$queryString$query; echo$query['action'];
不过,我强烈建议您修改.htaccess。

您的$var没有在全局上下文中定义,因为这可能是您没有显示的代码index.php从function=local scope调用操作脚本。发布您的实际代码。除非传入$\u GET,否则Apache无法影响PHP变量,除非register\u globals处于启用状态,否则不应该启用!!!!这些线在一起吗?mod_重写不会影响php。。。一定是发生了其他事情,或者$var正在其他地方被修改。我没有显示的代码是不相关的,太长了,无法在这里发布。我用我在问题中发布的确切函数测试了它,它在访问/index.php?action=anything时工作,但不工作$var在访问/action/anything时未设置。我尝试了$GLOBAL['var'],但它也没有设置在第二个url上。htaccess来自脚本,而不是我的代码,所以我认为我不会修改它,我可能会破坏一些东西。我还尝试了$GLOBAL['var'],但在重写的URL上没有设置它。
RewriteRule ^action/(.*)$ /index.php?action=$1 [QSA,L]