我正在尝试通过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']):
$_POST['data_string']
Notice: Undefined index: data_string in data.php on line ...
我已经检查了post_max_sizephp.ini,并将其设置为256M,这是否足够?我很困惑,不确定自己在做什么错…
post_max_size
编辑:如果我做"string"少量数据(例如var string = 'test'),则按预期$_POST["data_string"]返回test。所以我想知道我是否在Apache2,PHP或浏览器本身中达到某种数据限制?我正在使用Google Chrome浏览器17.0.963.79
"string"
var string = 'test'
$_POST["data_string"]
test
EDIT2:memory_limit = 256M在php.ini中
memory_limit = 256M
EDIT3:max_input_time = -1在php.ini中
max_input_time = -1
EDIT4:var_dump($ _ POST)返回数组(0)
EDIT5:在debian squeeze上运行最新的稳定版PHP5:具有Suhosin-Patch(cli)的PHP 5.3.3-7 + squeeze8(构建:2012年2月10日14:12:26)
您必须检查您与服务器之间所有项目的限制参数。对于代理服务器非常困难(如果有的话),但是至少您可以检查:
阿帕奇:
PHP:
如果您已达到Apache的已编译限制,则唯一的解决方案是避免直接处理如此大数据块的POSt,您必须将其分成几部分。