Ich habe ein seltsames Problem. Ich habe kürzlich meine Anwendung von meiner lokalen xampp-Installation auf einen SUSE Enterprise Server 11 migriert und alles funktioniert, aber dieses eine Ding macht mich verrückt und ich kann keine Lösung finden.
Bei der Übergabe von Arrays entweder über GET oder POST mit dieser Syntax:
%Vor%Ich bekomme nur das erste Element von Latom. Beachten Sie, dass dies nur ein einfaches Beispiel ist, das ich versucht habe, nachdem der Fehler an anderen Stellen aufgetreten ist, an denen die Weitergabe von Arrays erforderlich ist.
%Vor%Ausgaben
%Vor%aber
%Vor%gibt
%Vor%Genau das gleiche passiert mit allen POST-Anfragen.
Ich benutze PHP Version 5.3.8. Ich vermute, das Problem ist eine Serverkonfiguration, aber ich konnte nichts über dieses Problem finden.
Antwort auf Kommentare:
Das Gleiche passiert, wenn ich eine beliebige Anzahl von Variablen übergebe.
%Vor%gibt
%Vor%php.ini kann hier
gefunden werdenSie sollten das Verhalten in Aktion sehen können hier
Die Quelldatei dieser PHP-Datei ist
%Vor%Getestet auf meinem Server und es funktioniert gut für mich:
%Vor%Schauen Sie in Ihrer php.ini im Bereich Datenverarbeitung nach und sehen Sie sich die Werte an. Setzen Sie alles auf die Standardeinstellungen zurück, starten Sie den Webserver neu und versuchen Sie es erneut. PHP.ini-Standardeinstellungen für die Datenverarbeitung
Hmm .. vielleicht hängt es irgendwie damit zusammen kritischer Schwachstellen-Fehler ? Hat Ihr XAMPP dieselbe PHP-Version wie die Produktion? Ich weiß, dass es ähnliche Probleme geben könnte, wenn Sie zu viele Daten posten (sowohl in Bezug auf die Datei- / Postgröße als auch auf die Anzahl der Params). Wie wäre es mit einem Upgrade auf 5.3.10?
Versuchen Sie $_REQUEST
anstelle von $_GET
und / oder $_POST
Der wahrscheinlichste Grund für diesen Fehler ist, dass jemand "max_input_vars" auf 0 oder 1 in php.ini gesetzt hat. "max_input_vars" ist standardmäßig auf 1000 eingestellt und kann in php.ini überschrieben werden.
Ich habe in letzter Zeit das gleiche Verhalten mit einer anderen Ursache festgestellt - ein Sicherheitspatch, der auf eine PHP 5.2-Installation zurückportierte, implementierte teilweise "max_input_vars", verpasste aber einige wichtige Bits. Unterschiedliche Ursache, gleiches Ergebnis.
Relevanter PHP-Quellcode kann in main / php_variables.c gefunden werden. In PHP 5.3.8 kam der Gummi in der Funktion php_register_variable_ex auf die Straße.
Es gibt einen SAPI "treat_data" -Hook, den PHP benutzt, wenn er Strings wie "foo = bar & amp; asdf [] = 1 & amp; asdf [] = 2" analysiert - Ein anderes SAPI könnte eine eigene Implementierung haben.
>