为什么 PHP $_REQUEST 数组是空的?

vfc*_*sts 8 php nginx request

我在 Ubuntu Hardy 上安装了 nginx 并立即意识到 PHP 脚本正在获取空的请求数组,即无论 GET 还是 POST 都没有通过,甚至 $_REQUEST 数组也是空的。

当我切换回 Apache 时一切正常。

安装nginx版本为0.6.35-0ubuntu1.1~hardy1,PHP为PHP Version 5.2.4-2ubuntu5.10。

可能有什么问题?

小智 6

检查是否在您的 fastcgi 模块的“位置”部分设置

 fastcgi_param  QUERY_STRING     $query_string;
Run Code Online (Sandbox Code Playgroud)

http://wiki.nginx.org/NginxHttpFcgiModule


Dan*_*ack 6

try_files commandnginx的一个特性query_string是不会自动传递给重写的文件,而是必须显式传递。因为这个_$SERVER['QUERY_STRING']总是空的,所以变量$_REQUEST$_GET也没有设置。

Nginx 文档:

与重写不同,如果回退不是命名位置,则 $args 不会自动保留。如果您需要保留 args,则必须明确这样做:

try_files $uri $uri/ /index.php?q=$uri&$args;
Run Code Online (Sandbox Code Playgroud)

或者只有参数

try_files $uri $uri/ /index.php?$args;
Run Code Online (Sandbox Code Playgroud)

如果你想保证获得原始参数,然后使用$query_string这些相同$args,除了$query_string是只读的。