WAMP服务器显示正常但$_GET与$HTTP_GET_VARS无法取值求助
Hey,我来帮你拆解下当前遇到的问题——明明WAMP状态正常,PHP代码能跑,就是拿不到URL里的GET参数,对吧?咱们一步步来排查:
一、先修正代码里的小细节,方便排查问题
你现在的代码是把比较结果赋值给变量,然后直接echo布尔值:
$variable1=$_GET['errorUsuario']=="vacio"; echo $variable1; $variable2=$HTTP_GET_VARS['errorUsuario']=="vacio"; echo $variable2;
在PHP里,echo true会输出1,echo false则啥都不显示。但如果连1都没看到,说明$_GET['errorUsuario']根本没获取到值,甚至$_GET数组本身可能是空的。
先把代码改成这样,直观看到参数情况:
// 先打印整个$_GET数组,看看有没有参数进来 var_dump($_GET); // 再单独判断并输出目标参数 if(isset($_GET['errorUsuario'])){ echo "<br>errorUsuario的值:".$_GET['errorUsuario']; } else { echo "<br>没拿到errorUsuario参数"; }
访问页面后,就能清楚知道是参数没传进来,还是代码逻辑的问题。
二、排查WAMP的服务器配置问题
如果上面的代码显示“没拿到errorUsuario参数”,那大概率是服务器配置的问题,按下面的步骤检查:
检查php.ini的variables_order配置
点击WAMP托盘图标 → PHP → php.ini,打开配置文件后找variables_order这一项,确保它包含G(代表GET参数):variables_order = "GPCS"如果是
variables_order = "PCS"或者其他不含G的配置,PHP就不会解析URL里的GET参数。修改后记得重启WAMP服务器。检查项目的.htaccess是否过滤了参数
如果你项目里有.htaccess文件,看看里面的重写规则是不是把GET参数弄丢了。比如有些规则可能会忽略参数,暂时把.htaccess重命名成别的(比如.htaccess_bak),再访问页面测试。确认Apache的目录权限配置
打开Apache的httpd.conf文件,找到你项目目录对应的<Directory>块,确保AllowOverride设为All:<Directory "c:/wamp64/www/workfis/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require local </Directory>这个设置能保证项目的配置规则正常生效,避免权限问题导致参数无法传递。
用简单文件验证全局配置
新建一个test.php,内容就一行:<?php var_dump($_GET); ?>访问
http://localhost/test.php?test=123,如果能输出array(1) { ["test"]=> string(3) "123" },说明WAMP本身支持GET参数,问题出在你的项目里;如果还是空数组,那就回到第一步检查php.ini的配置。
三、顺便提一下$HTTP_GET_VARS
这个是PHP的旧版超全局变量,早在PHP 5.3.0就被废弃了,现在直接用$_GET就好,不用再管这个旧变量啦。
内容的提问来源于stack exchange,提问作者Carlos Terán

