为了账号安全,请及时绑定邮箱和手机立即绑定

PHP / Apache / AJAX-POST限制?

/ 猿问

PHP / Apache / AJAX-POST限制?

ITMISS 2019-11-18 13:58:33

我正在尝试通过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 ...

我已经检查了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:具有Suhosin-Patch(cli)的PHP 5.3.3-7 + squeeze8(构建:2012年2月10日14:12:26)


查看完整描述

3 回答

?
哔哔one

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

阿帕奇:

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

PHP:

  • 与POST大小直接相关的post_max_size

  • 可能不相关的upload_max_filesize不确定

  • max_input_time,如果POSt花费的时间太长

  • max_input_nesting_level,如果您的数据是具有很多子级别的数组

  • max_execution_time,但可以肯定不是

  • memory_limit,因为您可能超出了子进程允许的内存大小

  • max_input_vars,如果您的数据数组包含许多元素

如果您已达到Apache的已编译限制,则唯一的解决方案是避免直接对如此大的数据块进行POSt,则必须将其分成几部分。


查看完整回答
反对 回复 2019-11-18
?
aluckdog

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


suhosin.post.max_value_length = 65000


查看完整回答
反对 回复 2019-11-18
?
慕仰8121524

只需从参数名称中删除单引号!


从:


data: {'data_string': string}

至:


data: {data_string: string}


查看完整回答
反对 回复 2019-11-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信