PHP/Apache/AJAX POST-Datenlimit
Beim Versuch, eine große Datenmenge (2 Millionen Zeichen) per POST mit AJAX zu senden (jQuery) kann die PHP-Seite die Daten nicht abrufen und gibt den Fehler „Undefinierter Index“ zurück. Dieses Problem hängt nicht mit der post_max_size-Einstellung in php.ini zusammen, die ausreichend hoch ist (256 MB).
Untersuchung von Grenzwerten
Das Problem liegt in den mehreren auferlegten Grenzwerten durch verschiedene am Prozess beteiligte Komponenten:
-
Apache:
- LimitRequestBody: Steuert die maximale Größe eingehender POST-Anfragen. Sie sollten Ihre Apache-Fehlerprotokolle überprüfen, um das tatsächliche Limit zu ermitteln, das im Allgemeinen standardmäßig bei etwa 2 GB liegt.
-
PHP:
- post_max_size: Begrenzt die Größe der POST-Daten. Stellen Sie sicher, dass diese Einstellung in Ihrer php.ini hoch genug eingestellt ist (z. B. 256 MB).
- upload_max_filesize: Obwohl es nichts mit POST-Daten zu tun hat, ist es der Vollständigkeit halber erwähnenswert.
- max_input_time: Steuert die maximale Zeit für die POST-Datenverarbeitung zulässig. Legen Sie einen großen Wert fest, um Zeitüberschreitungen zu vermeiden (z. B. -1).
- max_input_nesting_level: Begrenzt die Tiefe verschachtelter Arrays in POST-Daten. Wenn Ihre Daten tief verschachtelte Arrays enthalten, müssen Sie diesen Wert möglicherweise erhöhen.
- max_execution_time: Ist wahrscheinlich nicht die Ursache des Problems.
- memory_limit: Stellt sicher, dass der PHP-Unterprozess über ausreichend Speicher verfügt mit den Daten umgehen. Passen Sie diese Einstellung entsprechend an (z. B. 256M).
- max_input_vars: Begrenzt die Anzahl der Variablen in POST-Anfragen. Wenn Ihre Daten eine große Anzahl von Elementen enthalten, müssen Sie diesen Wert möglicherweise erhöhen.
Lösung
Wenn Apaches LimitRequestBody ist erreicht ist, können Sie die Daten nicht direkt POSTEN, da sie das kompilierte Limit überschreiten. Sie müssen die Daten in kleinere Blöcke aufteilen und sie in mehreren POST-Anfragen senden.
Das obige ist der detaillierte Inhalt vonWarum sind meine AJAX POST-Daten trotz hoher PHP-Limits begrenzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!