imagecreatefromjpeg导致内存错误


imagecreatefromjpeg is causing memory error

我得到一个内存错误:

Fatal error:  Out of memory (allocated 67633152) (tried to allocate 19104 bytes)

我做了大量的研究。我试图将php.ini的内存限制增加到256M,并用phpinfo()进行了检查,以验证它是否已经更改。这不起作用。

我的照片是晚上9点60分的大照片,4776便士×2856px分辨率。我知道上传的图像可能会膨胀到大约:4776x2856x3=40M+。但这远远低于256M的内存限制。我甚至尝试过将内存限制设置为10000M。这也不起作用。

我上传了其他运行良好的较小图像,但随后重试了大图像,但没有成功,也没有更改错误消息。

我的下一步是什么?

这是我上传代码的精简版本:

foreach(array_keys($FILES['name']) as $KEY) {
if($FILES['type'][$KEY] === 'image/jpeg') {
    $TEMP = imagecreatefromjpeg($FILES['tmp_name'][$KEY]);
} else if($FILES['type'][$KEY] === 'image/png') {
    $TEMP = imagecreatefrompng($FILES['tmp_name'][$KEY]);
} else if($FILES['type'][$KEY] === 'image/gif') {
    $TEMP = imagecreatefromgif($FILES['tmp_name'][$KEY]);
} else {
    die(); }
$HD = $KEY.'.jpeg';
imagejpeg($TEMP, $HD, 100);
imagedestroy($TEMP); 
}

这是我的php.ini

输入:

post_max_size = 1024M
upload_max_filesize = 1024M
max_file_uploads = 200
memory_limit = 1024M
max_execution_time = 259200
max_input_time = 259200
session.gc_maxlifetime = 1200

更改内存限制在除我之外的许多情况下都会有所帮助。我只是在我的主机上读到,即使改变内存限制也会反映在phpinfo()中;可能不同的并不是主机施加的真正限制。

由于我们共享主机的资源限制可以为PHP分配比您的最大内存更多的内存包裹使用php.ini文件或memory_limit指令增加PHP的内存可能会导致phpinfo()输出反映但是,服务器不会分配比限制