我在Ubuntu Hardy上安装了nginx,并立即意识到PHP脚本获得了空的请求数组,即无论GET或POST什么都没有通过,甚至$ _REQUEST数组也是空的。
当我切换回Apache,这一切都很好。
安装nginx的版本是0.6.35-0ubuntu1.1〜hardy1,PHP是PHP 5.2.4-2ubuntu5.10。
什么可能是错的?
检查这个设置是否在你的“位置” – 你的fastcgi模块部分
fastcgi_param QUERY_STRING $query_string;
这是nginx中try_files command的一个特性,即try_files command不会自动传递到重写的文件,而是必须显式传递。 因为这个_$SERVER['QUERY_STRING']总是空的,所以variables$_REQUEST和$_GET也没有设置。
从Nginx文档:
与重写不同的是,如果回退不是命名的位置,$ args不会自动保留。 如果你需要保存参数,你必须明确地这样做:
try_files $uri $uri/ /index.php?q=$uri&$args;
或者只是参数
try_files $uri $uri/ /index.php?$args;
如果你想保证获得原始的参数,那么使用$query_string ,它和$args相同,除了$query_string是只读的。
尝试检查nginx使用的phpconfiguration文件中的variables_order 。