我遇到了一个奇怪的问题,即$_GET
(和$_REQUEST
)变量为空,即使参数正在传递。
我的PHP代码:
echo $_SERVER['REQUEST_URI'];
echo print_r($_REQUEST);
echo print_r($_GET);
输出:
/service/getAllOrders?sortBy=date_created&sortDir=desc
Array()
Array()
我正在使用nginx并将所有请求转发到index.php。我的配置如下:
server {
listen 80;
server_name decaro.localhost;
root /Users/rweiss/Sites/decaro/LocalOrderWebsite;
#access_log /usr/local/etc/nginx/logs/default.access.log main;
location / {
add_header Cache-Control "no-cache, no-store";
include /usr/local/etc/nginx/conf.d/php-fpm;
try_files $uri $uri/ /index.php$args;
}
location /assets/ {
allow all;
}
location = /info {
allow 127.0.0.1;
deny all;
rewrite (.*) /.info.php;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
为什么?
答案 0 :(得分:4)
解决方案是在nginx中传递$ query_string变量:
try_files $uri $uri/ /index.php?$query_string;
感谢您的所有帮助。
赖安
答案 1 :(得分:1)
尝试打印出来:
echo $_SERVER['QUERY_STRING'];
这是插入Super Global $ _GET的GET数据 另外,我认为您应该使用以下链接调用您的脚本:
www.yourdomain.com/service/getAllOrders.php?sortBy=date_created&sortDir=desc
注意.php ..
在检查$ _GET之前查看查询字符串的内容,尝试使用
进行打印 echo print_r($_GET,1);