TextArea- gelegentlich in $ _POST fehlt aber content_length immer richtig?
-
19-09-2019 - |
Frage
Ein seltsamer Fehler auf einem Server tauchte eine ziemlich aktive Stelle ausgeführt wird.
- Server: Apache / 2.2.3 (CentOS)
- PHP: 5.2.6
- eAccelerator 0.9.5.3
Während mehrteiliger Formulare mit, gelegentlich von einem Textfeld gesendeten Daten werden in dem $ _POST
fehlenWir wissen, dass die Daten, weil content_length zeigt eine vernünftige Größe über 1 K
gesendet wurdeAlle anderen Eingabefelder in der Form korrekt empfangen werden.
Es ist NICHT Browser spezifisch und geschieht auf IE / Firefox / Chrome.
Arbeiten fast 99% der Zeit, nicht nur 1 oder 2 mal im Durchschnitt für jeden hundert Beiträge gemacht.
In sehr seltenen Gelegenheit konnten wir es uns selbst reproduzieren, so dass wir Daten wissen gesendet wird, verarbeitet nicht nur von beiden Apache / PHP
Alle diese Einstellungen wurden geprüft und sind angemessen in der php.ini:
memory_limit
max_input_time
upload_max_file_size
post_max_filesize
in httpd.conf
LimitRequestBody
TimeOut
würde gerne andere Ideen hören, was das sein könnte. Ich kann keine bekannten verwandten Fehler für PHP finden.
Lösung
Nicht sicher ist dies das Problem (keine einfache Frage zu erraten ^^), aber wenn Sie die suhoshin Sicherheitspatch / Extension, haben Sie versucht, de-aktivieren oder?
(ich weiß nicht, ob es auf CentOS standardmäßig aktiviert ist, aber es könnte sein, wenn man bedenkt es auf Ubuntu ist, die „weniger entreprise orientiert“ ist)
Ich schlage dies wegen der diesem Bugreport , in der es ein paar Hinweise, die zum Beispiel sagen:
[30. Oktober 2007 11.02 Uhr UTC] sbauer bei GJL-Netzwerk dot net
Während bei denen dieses Problem, auch wir festgestellt, dass die Ursache für dieses Problem die suhosin Patch wurde, welches ist - von default - konfiguriert ist, einen max hat Begrenzung für die Länge des Cookies, Anfrage, Post, erhalten und Sitzung Vars. Z.B. für POST das sieht aus wie:
suhosin.post.max_array_depth 100 100 suhosin.post.max_array_index_length 64 64 64 suhosin.post.max_name_length 64 suhosin.post.max_totalname_length
256 256 suhosin.post.max_value_length 65000 65000 suhosin.post.max_vars
200 200Diese Bedürfnisse Derivate ein gesetzt werden ausreichend höhere Zahl. Z.B. in unserer Fall war das Problem, dass unsere POST Daten zu lang war (wie dies scheint zu sein, der Fall für viele von Ihnen hier).
Deshalb schlage ich vor der php.ini zu überprüfen oder (Nach Ihrer Distribution dort oft ist ein suhosin.ini) und korrekter die oben genannten Werte oder setzen Sie sie auf 0 bis deaktivieren. Wenn diese Derivate nicht gesetzt ist, werden die Standardwerte verwendet werden. Sie müssen prüfen / hinzufügen: suhosin.post.max _.... suhosin.request.max _... suhosin.get.max _... suhosin.session.max _... suhosin.cookie.max _...
finden Sie in phpinfo (), wo diese Werte sollen aufgeführt werden!
Und / oder:
[13. November 2008 04.58 Uhr UTC] keith bei tdrnetworks dot com
Im Hinblick auf die enctype = "multipart / form-data" nicht die $ _POST bevöl Vars Ich fand meine Lösung war die Suhosin deaktivieren Sicherheitsmodul.
Haben Sie gehen!
Es gibt auch eine Notiz, die sagt:
[5. Februar 18.49 UTC] neal dot Pressley bei yahoo dot com
Ich war vor dem gleichen Problem. Ich hatte eine HTML-Formular mit PHP-Skripte, in denen ich wurde Radiobuttons einreichen oder Kontrollkästchen. Wenn ich das Formular veröffentlichen, PHP wurde keine Post-Parameter zu finden. es war zufällig, einige Zeit war es arbeiten und einige Zeit nicht. Selbst ich mit Get versuchte, arbeitete sie einige Zeit und einige Zeit nicht. Dann habe ich ändern ENCTYPE von Groß- in Kleinbuchstaben und es begann Arbeits prefectly
Ist Ihr Formular / Seite HTML-gültig? Vielleicht, in einigen seltenen Fällen ist es nicht?
Vielleicht helfen diese werde ... Wenn nicht, ich bin gespannt, den Grund dieses Problems kennen!