如果 POST 数据超过几百个字符,从 jQuery 到 PHP 的 POST 请求会卡住

如果 POST 数据超过几百个字符,从 jQuery 到 PHP 的 POST 请求会卡住

我有一个由 jQuery 发起到 PHP 脚本的普通 ajax 请求:

$.ajax({
  url:"script.php",
  data: data,
  type: "POST"
  // error & success handlers here
});

如果数据(可能是 JSON,也可能是二进制文件)的长度超过几百个字符,则 POST 请求将永远无法完成,只会挂在那里。Apache 日志或 JS 控制台中没有错误,也没有其他迹象表明可能发生了什么。

摆弄 php.ini post_max_data 和其他设置没有产生任何结果,并且我能想到的所有设置都设置为非常宽松的值。

我正在运行带有 Apache 2.4 和 PHP 5.5.9 的 Ubuntu 14.04 服务器。

我错过了什么?

答案1

您是否检查过 PHP 配置中有关请求长度的内容?有多个参数控制允许的请求大小,我将在此列出最重要的参数(直接来自 php.ini 并附带参考资料)。

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 10M

; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 1000

如果您的帖子变量中有一个高度嵌套的数据结构(不太可能),则可能需要增加这个值

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
max_input_nesting_level = 64

希望这可以帮助,

谨致问候并祝您编码愉快!

相关内容