daz*_*166 10 php memory file-upload
用户在我的网站上传图像时遇到了很多问题.
他们最多可以上传6张图片
最初我不得不将php.ini中的值更改为:
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 120
max_file_uploads = 7
memory_limit=128M
Run Code Online (Sandbox Code Playgroud)
我不得不改变这个,因为得到了各种各样的错误,如内存不足,超出最大值等.
在我查看包含以下内容的错误日志之前,一切正常
[11-Jun-2011 04:33:06] PHP Warning: Unknown: POST Content-Length of 113 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:12] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:27] PHP Warning: Unknown: POST Content-Length of 74 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:34] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:43] PHP Warning: Unknown: POST Content-Length of 77 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:48] PHP Warning: Unknown: POST Content-Length of 74 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:33:53] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:34:20] PHP Warning: Unknown: POST Content-Length of 133 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:35:29] PHP Warning: Unknown: POST Content-Length of 131 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:36:00] PHP Warning: Unknown: POST Content-Length of 113 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:36:06] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 [11-Jun-2011 04:36:34] PHP Warning: Unknown: POST Content-Length of 116 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0
如果我将post max值更改回前8M,我会收到如下消息:
PHP Warning: POST Content-Length of 11933650 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
我出错的任何想法?
hak*_*kre 22
在某些32位系统上,PHP将采用类似的内存设置2000M
,2G
并通过不执行边界检查将其转换为整数个字节.一个数字开始于2G
或2048M
将是-2147483648
字节.
一些PHP版本将其置于顶部,因此它不会进入负数(即32位有符号整数限制).
如果要在此类系统上实现最大可能的字节数,请使用2147483647
.这等于2千兆字减去一个字节.
或者,如果您需要处理大数据,请考虑使用64位系统.
另外,您应该考虑以下事项:
根据PHP手册,memory_limit
设置更重要.如果它没有提供足够的内存,那么后期数据大小检查将会通过,但PHP没有足够的内存来实际处理后期数据.你会得到另一个错误,那就是内存超出了.因此,在配置PHP时,请注意post_max_size
小于memory_limit
.
在您的示例中memory_limit
是128M
,因此它无法处理大于~128兆字节的大小的后期数据.
(此博客文章显示了可能发生的情况以及32位和64位系统上的大内存设置的行为)