问题描述
|
用户在我的网站上上传图片时遇到了很多问题。
他们最多可以上传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警告:未知:113行的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
[2011年6月11日04:33:12] PHP警告:未知:POST内容长度75个字节超出了第0行上“未知”中的-1988100096字节的限制
[11-Jun-2011 04:33:27] PHP警告:未知:74行的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
[2011年6月11日04:33:34] PHP警告:未知:POST内容长度的75个字节超出了第0行上“未知”中的-1988100096字节的限制
[11-Jun-2011 04:33:43] PHP警告:未知:POST Content-Length 77字节超出了第0行上UnkNown中的-1988100096字节的限制
[11-Jun-2011 04:33:48] PHP警告:未知:74行的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
[11-Jun-2011 04:33:53] PHP警告:未知:POST内容长度的75个字节超出了第0行上“未知”中的-1988100096字节的限制
[11-Jun-2011 04:34:20] PHP警告:未知:133字节的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
[11-Jun-2011 04:35:29] PHP警告:未知:POST内容长度131个字节超出了-1988100096字节(在第0行上的未知数)的限制
[11-Jun-2011 04:36:00] PHP警告:未知:POST内容长度113个字节超出了-1988100096字节(在第0行中的未知数)的限制
[11-Jun-2011 04:36:06] PHP警告:未知:75行的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
[2011年6月11日04:36:34] PHP警告:未知:116行的POST内容长度超出了第0行上“未知”中的-1988100096字节的限制
如果我将帖子最大值更改为前8M,则会收到如下消息:
PHP警告:11933650字节的POST内容长度超过了第0行中UnkNown中的8388608字节的限制
有什么想法我要去哪里吗?
解决方法
在某些32位系统上,PHP将采用
2000M
或2G
这样的内存设置,并且通过不执行边界检查将其转换为整数字节。以2G
或2048M
开头的数字将是-2147483648
字节。
一些PHP版本将其设置在顶部,因此它不会变成负数(即32位有符号整数限制)。
如果要在这样的系统上实现最大可能的字节数,请使用2147483647
。这等于两个千兆字节减去一个字节。
另外,如果您需要处理大数据,请考虑使用64位系统。
此外,您应该考虑以下几点:
根据PHP手册,memory_limit
设置是更重要的设置。如果它没有提供足够的内存,则将通过后数据大小检查,但是PHP将没有足够的内存来实际处理后数据。您将收到另一个错误,那就是内存已超出。因此,在配置PHP时,请注意post_max_size
小于memory_limit
。
在您的示例中,“ 7”是“ 11”,因此它无法处理大小大于〜128 MB的后数据。
(此博客文章显示了可能发生的情况以及32位和64位系统上的大内存设置的行为)
, 您的\“ 2000M \”似乎已超过整数限制。从手册中:
PHP允许使用位值的快捷方式,包括K(千),M(兆)和G(千兆)。如果您使用其中任何一种,PHP都会自动进行转换。请注意不要超过32位有符号整数限制(如果您使用的是32位版本),因为这会导致脚本失败。
尝试较小的值,例如1000M
。无论如何,可能不会有2 GB的传入数据。