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?


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


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 .


0

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


Die Variablenreihenfolge ist EGPCS. Es ist auf die Standardeinstellung gesetzt
— vfclists
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.