创建拇指时尝试分配内存时发生致命错误


Fatal error trying to allocate memory when creating thumbs

我想分享我在路上发生的一些事情。

我上传了一张图片到我的网站,然后我创建了一些拇指。那些拇指是从相对较大的文件(大约5mb的jpeg图像)中自动裁剪出来的,我已经做了很多次了。突然,当上传一个大文件并从裁剪后的图像(而不是原始图像)中进行拇指操作时,我发现了这个错误:

Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 22464 bytes)

如何耗尽128Mb内存?

主要问题是我使用了比可用内存更多的内存。当然,首先要检查的是,我上传的文件是否正确,而不是太大。好的,3Mb。那么,问题出在哪里呢?

通常情况下,这种错误会出现在完全耗尽可用内存的确切位置。就我而言,是在这个里面:

$orig = imagecreatefromjpeg($fullPathFilename);

因此,服务器在将新映像分配到内存时崩溃。然后,我想到了:我没有释放以前的任何分配调用!如前所述,我碰巧从多个大小的图像中生成了很多拇指。我真傻,我一个都没放。因此,如果您在裁剪/调整大小/更改多个图像时碰巧看到此错误,请检查代码中的调用:

imagedestroy($orig);

综上所述。

如果你没有找到imagedestroy()函数,那么你可能已经找到了你的问题

我也遇到了这个问题

增加以下变量,使页面执行不会停止:

max_input_time
memory_limit
max_execution_time

干杯

相关文章: