Home >Backend Development >PHP Tutorial >post 数据大小的限制问题

post 数据大小的限制问题

WBOY
WBOYOriginal
2016-06-23 13:52:222015browse

遇到一个问题:往后台post提交数据时,当超过一定大小,就发现后台的post数据为空,后台收不到post数据。

请问是什么原因?是不是因为屏蔽了哪个php函数?还是php.ini的某项设置?


php.ini 中  post_max_size = 64M;


回复讨论(解决方案)

php 5.3.9 以后还有个数据项数的限制

php 5.3.9 以后还有个数据项数的限制



请问是哪个数据项限制?

post 表单控件数

post 表单控件数




是  max_file_uploads 么?

你有上?文件的??
?有一?upload_max_filesize 需要?

你有上?文件的??
?有一?upload_max_filesize 需要?




upload_max_filesize = 30M
max_file_uploads = 500
 post_max_size = 64M; 

这个设置按道理是可以满足一般post数据提交。

是的,但你的??有多大呢?

你post的数据有多大,print_r($_POST); 看看。

你post的数据有多大,print_r($_POST); 看看。




echo print_r($_POST);

输出结果


Array
(
)
1


很奇怪的输出。

print_r($_POST);

print_r($_POST);



输出结果显示,没有提交的那个数据过大的post变量。
单独测试了一下,数据如果超过 64999,就无法正常提交,小于这个数据,后台能收到。

另外,这个数据过大,不影响别的post数据。

print_r($_POST);
打印出空数组,表示你没有用 post 方式提交
或是你在 php.ini 禁用了 post 提交方式

如果是 post 失败(数据超出允许范围)则打印出的是什么都没有

print_r($_POST);
打印出空数组,表示你没有用 post 方式提交
或是你在 php.ini 禁用了 post 提交方式

如果是 post 失败(数据超出允许范围)则打印出的是什么都没有



好像是被限制了单个post数据的大小,但是,不知道是在php.ini里面被限制的还是哪里,网上搜索的相关条件限制都无法解决这个问题。

你看看 echo file_get_contents('php://input'); 的结果

一般出错时都有错误信息,你也不去看看

查到原因了,前些天加了 suhosin 的功能,被这个 suhosin 给限制了。现在的问题变成:怎么配置 suhosin? 
suhosin.post.max_value_length 65000 65000 

搞定了,在php.ini里面添加 suhosin 的设置

suhosin.post.max_value_length = 4194304
suhosin.post.max_vars = 20000
suhosin.request.max_vars=2000

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn