我想在路上分享一些发生在我身上的事情。
我将图片上传到我的网站,然后我创建了一些拇指。那些大拇指从相对较大的文件(大约5mb的jpeg图像)自动裁剪,我做了很多次。突然,当上传一个大文件并从裁剪的图像(而不是原始图像)做拇指时,我发现了这个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 22464 bytes)
我怎么能耗尽128Mb的内存?
答案 0 :(得分:1)
主要问题是我使用的内存比可用内存多。当然,要检查的第一件事是,如果我上传的是正确的文件而不是太大的文件。好的,3Mb。那么,问题出在哪?
通常情况下,这种错误会带来完全消耗可用内存的确切行。就我而言,就在这个内部:
$orig = imagecreatefromjpeg($fullPathFilename);
因此,当将新图像分配到内存时,服务器崩溃了。然后,我想到了这一点:我没有释放任何以前的分配电话!如前所述,我偶然会从多个大小的图像中生成大量的拇指。愚蠢的我,我没有释放任何这些。因此,如果您在裁剪/调整/更改多个图像时碰巧看到此错误,请在代码中检查此调用:
imagedestroy($orig);
所以,总结一下。
imagedestroy()
功能,那么您可能已经找到了问题!答案 1 :(得分:1)
我也遇到了这个问题
增加以下变量,以便您的页面执行不会停止:
max_input_time
memory_limit
max_execution_time
干杯