我有一个由 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
希望这可以帮助,
谨致问候并祝您编码愉快!