我想分享我在路上发生的一些事情。
我上传了一张图片到我的网站,然后我创建了一些拇指。那些拇指是从相对较大的文件(大约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
干杯