Php

為什麼 PHP $_REQUEST 數組為空?

  • March 30, 2021

我在 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;

http://wiki.nginx.org/NginxHttpFcgiModule

try_files commandnginx的一個特性query_string是它不會自動傳遞給重寫的文件,而是必須顯式傳遞。因為這個_$SERVER['QUERY_STRING']總是空的,所以變數$_REQUEST$_GET也沒有設置。

來自Nginx 文件:

與重寫不同,如果回退不是命名位置,則不會自動保留 $args。如果您需要保留 args,則必須明確地這樣做:

try_files $uri $uri/ /index.php?q=$uri&$args;

或僅使用論點

try_files $uri $uri/ /index.php?$args;

如果您想保證獲得原始參數,則使用$query_stringwhich 與它相同,$args但它$query_string是只讀的。

引用自:https://serverfault.com/questions/171047