Warum ist das PHP $ _REQUEST-Array leer?

8

Ich habe nginx unter Ubuntu Hardy installiert und sofort festgestellt, dass die PHP-Skripte leere Anforderungsarrays erhielten, dh ob GET oder POST nichts durchlief, sogar das Array $ _REQUEST war leer.

Als ich zurück zu Apache wechselte, war alles in Ordnung.

Die Installations-Nginx-Version ist 0.6.35-0ubuntu1.1 ~ hardy1 und PHP ist PHP-Version 5.2.4-2ubuntu5.10.

Was könnte falsch sein?

vfclists
quelle
Verwenden Sie Umschreib- oder Umleitungsregeln?
Ircmaxell
Nein, es gibt keine Umschreibungen oder Weiterleitungen
vfclists
Dies kann auch passieren, wenn ein Ordner mit demselben Namen wie der Pfad umgeleitet wird, der umgeleitet wird, wenn mod_rewrite oder ein gleichwertiger Ordner vorhanden ist. In diesem Fall werden die GET-Parameter verschluckt. Suchen Sie nach einem passenden Ordnernamen, wenn Sie Apache verwenden.
MyStream

Antworten:

6

Überprüfen Sie, ob dies in Ihrem "Standort" -Abschnitt für Ihr FastCGI-Modul festgelegt ist

 fastcgi_param  QUERY_STRING     $query_string;

http://wiki.nginx.org/NginxHttpFcgiModule

funkdoobiest
quelle
Ich deaktiviere die Aufnahme der Basisdatei fastcgi_params, da ich nicht wusste, wie sie möglicherweise benötigt wird. Es lohnt sich jedoch, etwas darüber zu lernen.
vfclists
6

Es ist eine Funktion von try_files commandin nginx, dass die query_stringnicht automatisch an die neu geschriebene Datei übergeben wird, sondern explizit übergeben werden muss. Aus diesem Grund _$SERVER['QUERY_STRING']ist immer leer, und so sind die Variablen $_REQUESTund $_GETauch nicht gesetzt.

Aus der Nginx-Dokumentation:

Anders als beim Umschreiben werden $ args nicht automatisch beibehalten, wenn der Fallback kein benannter Speicherort ist. Wenn Sie Argumente beibehalten möchten, müssen Sie dies explizit tun:

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

oder nur mit den Argumenten

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

Wenn Sie sicherstellen möchten , verwenden Sie die ursprünglichen Argumente dann zu erhalten , $query_stringwelche die gleiche wie der $argsAusnahme , dass $query_stringschreibgeschützt ist .

Danack
quelle
0

Versuchen Sie, die variable_order in der von nginx verwendeten PHP-Konfigurationsdatei zu überprüfen .

lg.
quelle
Die Variablenreihenfolge ist EGPCS. Es ist auf die Standardeinstellung gesetzt
vfclists