imagecreatefromjpeg导致内存错误

时间:2015-02-21 10:04:39

标签: php upload

我收到内存错误:

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

我做了大量的研究。我试图将php.ini的内存限制增加到256M,并使用phpinfo()检查它是否已更改。这没用。

我的图片是9.6M的大图片,4776px×2856px res。我知道上传的图像可能会膨胀到四周左右: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

INPUT:

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

1 个答案:

答案 0 :(得分:0)

在许多情况下,更改内存限制将有助于除了我的。我刚刚在我的主机上看到即使更改内存限制确实反映在phpinfo();这不是主持人施加的实际限制,可能会有所不同。

  

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