PHP警告:POST内容长度为113个字节,超过Unknown中的-1988100096个字节的限制

我一直在用户上传图片在我的网站上有很多问题。

他们可以上传最多6个图像

原来我不得不在php.ini中更改值:

upload_max_filesize = 2000M post_max_size = 2000M max_execution_time = 120 max_file_uploads = 7 memory_limit=128M 

我不得不改变,因为得到各种错误,如内存不足,超过最大的职位等。

一切都很好,直到我检查了我的错误日志,其中包含:

  [11-Jun-2011 04:33:06] PHP警告:未知:POST内容 - 长度为113字节超过了-1988100096字节
 [2011年6月11日04:33:12] PHP警告:未知:POST内容 -  75字节的长度超过了第0行未知的-1988100096字节的限制
 [2011年6月11日04:33:27] PHP警告:未知:POST内容 -  74字节的长度超过了0行未知的-1988100096字节的限制
 [2011年6月11日04:33:34] PHP警告:未知:POST内容 -  75字节的长度超过第0行未知的-1988100096字节的限制
 [2011年6月11日04:33:43] PHP警告:未知:POST内容 -  77字节的长度超过了第0行未知的-1988100096字节的限制
 [2011年06月11日04:33:48] PHP警告:未知:POST内容 -  74字节的长度超过了0行中未知的-1988100096字节的限制
 [11-Jun-2011 04:33:53] PHP警告:未知:POST内容 -  75字节的长度超过了第0行未知的-1988100096字节的限制
 [2011年6月11日04:34:20] PHP警告:未知:POST内容 -  133字节的长度超过了第0行未知的-1988100096字节的限制
 [2011年6月11日04:35:29] PHP警告:未知:POST内容 - 长度为131字节超过了-1988100096字节的限制
 [2011年6月11日04:36:00] PHP警告:未知:POST内容 - 长度为113字节超过了-1988100096个字节
 [2011年6月11日04:36:06] PHP警告:未知:POST内容 -  75字节的长度超过了第0行未知的-1988100096字节的限制
 [2011年6月11日04:36:34] PHP警告:未知:POST内容 -  116字节的长度超过第0行未知的-1988100096字节的限制 

如果我更改后的最大值回顶8M我得到的消息是这样的:

  PHP警告:POST内容长度为11933650个字节,超过了第0行中未知的8388608个字节的限制 

任何想法,我要出错?

在一些32位系统上,PHP将采用2000M2G的内存设置,并通过不执行边界检查将其转换为整数个字节。 从2G2048M开始的数字将是-2147483648字节。

一些PHP版本将其封装在顶部,因此不会进入负数(即32位有符号整数限制)。

如果你想在这样的系统上实现最大可能的字节数,那么使用2147483647 。 这等于两千兆字节减一个字节。

或者,如果您需要处理大量数据,请考虑使用64位系统。

另外你应该考虑以下几点:

根据PHP手册 , memory_limit设置是更重要的一个。 如果它没有提供足够的内存,那么post-data大小检查就会通过,但是PHP没有足够的内存来处理post-data。 你会得到另一个错误,而不是内存超出。 所以当你configuration你的PHP时,注意post_max_size小于memory_limit

在你的例子中, memory_limit128M ,所以它不能处理大于〜128M的大小的后置数据。

( 这篇博客文章展示了可能发生的情况以及32位和64位系统上的大内存设置的行为 )

看起来你的“2000M”超过了整数限制。 从手册 :

PHP允许比特值的快捷方式,包括K(千),M(兆)和G(千兆)。 如果您使用其中任何一种,PHP将自动执行转换。 小心不要超过32位有符号整数限制(如果你使用的是32位版本),因为这会导致你的脚本失败。

尝试一个较小的值,比如1000M 。 2千兆字节的传入数据可能不太可能。