PHP/Apache/AJAX - POST限制?

Jam*_*ine 15 php apache ajax jquery

我试图通过ajax(jQuery)发送200万字符大的非数据字符(非二进制字符串)的POST数据,它总是在PHP端显示为空白.这是我的代码:

var string = "<data string that is 2M chars long>";
$.ajax({
    cache: false,
    type: 'POST',
    url: 'data.php',
    data: {'data_string': string}
});
Run Code Online (Sandbox Code Playgroud)

在PHP方面,我收到以下错误消息(当尝试从中检索数据时$_POST['data_string']):

Notice: Undefined index: data_string in data.php on line ...
Run Code Online (Sandbox Code Playgroud)

我已经检查了post_max_sizephp.ini,它设置为256M应该绰绰有余?我很难过,不知道我做错了什么......

编辑:如果我制作"string"少量数据(例如var string = 'test')然后按预期$_POST["data_string"]返回test.所以我想知道我是否会在Apache2,PHP或浏览器中达到某种数据限制?我使用的是Google Chrome 17.0.963.79

EDIT2:memory_limit = 256M在php.ini中

EDIT3:max_input_time = -1在php.ini中

EDIT4:var_dump($ _ POST)返回数组(0)

EDIT5:在debian squeeze上运行PHP5的最新稳定版本:PHP 5.3.3-7 + squeeze8与Suhosin-Patch(cli)(内置:2012年2月10日14:12:26)

reg*_*ero 29

您必须检查您和服务器之间所有项目的限制参数.代理服务器(如果有的话)很难,但至少可以检查:

阿帕奇:

  • LimitRequestBody,默认情况下大约为2Gb,对于64位可能更大,请查看错误日志以获取详细信息.

PHP:

如果你已达到Apache的编译限制,你唯一的解决方案就是避免直接输入这么大一块数据,你必须把它分成几块.

  • 谢谢你,`max_input_vars`是我们的罪魁祸首. (5认同)