PHP/Apache/AJAX POST 数据限制
尝试使用 AJAX 通过 POST 发送大量数据(200 万个字符)时(jQuery),PHP 端无法检索数据并返回“未定义索引”错误。这个问题与 php.ini 中的 post_max_size 设置无关,该设置足够高(256M)。
调查限制
问题在于施加的多重限制由涉及的各个组件process:
-
Apache:
- LimitRequestBody:控制传入 POST 请求的最大大小。您应该检查 Apache 错误日志以确定实际限制,默认情况下通常约为 2GB。
-
PHP:
- post_max_size:限制POST数据的大小。确保在 php.ini 中将此设置设置得足够高(例如 256M)。
- upload_max_filesize:虽然与 POST 数据无关,但为了完整性值得一提。
- max_input_time:控制最长时间允许 POST 数据处理。将其设置为较大的值以避免超时(例如,-1)。
- max_input_nesting_level:限制 POST 数据中嵌套数组的深度。如果您的数据包含深度嵌套数组,则可能需要增加此值。
- max_execution_time:不太可能是问题的原因。
- memory_limit:确保 PHP 子进程有足够的内存来执行处理数据。相应地调整此设置(例如 256M)。
- max_input_vars:限制 POST 请求中的变量数量。如果您的数据包含大量元素,您可能需要增加此值。
解决方案
如果 Apache 的 LimitRequestBody 是达到后,您无法直接 POST 数据,因为它超出了编译限制。您必须将数据分成更小的块并在多个 POST 请求中发送。
以上是为什么即使 PHP 限制很高,我的 AJAX POST 数据仍然有限?的详细内容。更多信息请关注PHP中文网其他相关文章!