PHP/Apache/AJAX - POST LIMIT?

2022-08-30 20:59:58

我正在尝试通过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}
});

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

Notice: Undefined index: data_string in data.php on line ...

我已经检查了php.ini,它设置为256M,这应该绰绰有余?我很困惑,不确定我做错了什么...post_max_size

编辑:如果我制作少量数据(例如),则返回,如预期的那样。所以我想知道我在Apache2,PHP或浏览器本身中是否达到了某种数据限制?我使用的是谷歌浏览器 17.0.963.79"string"var string = 'test'$_POST["data_string"]test

EDIT2: 在 php 中.inimemory_limit = 256M

EDIT3:在php中.inimax_input_time = -1

EDIT4: var_dump($_POST) 返回数组(0)

EDIT5: 在 debian squeeze 上运行 PHP5 的最新稳定版本: PHP 5.3.3-7+squeeze8 with Suhosin-Patch (cli) (构建时间: Feb 10 2012 14:12:26)


答案 1

您必须检查您与服务器之间所有项目的限制参数。对于代理服务器来说很难,如果有的话,但至少你可以检查:

阿帕奇:

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

菲律宾比索:

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


答案 2

您也可以检查.ini设置,例如:

suhosin.post.max_value_length = 65000

推荐