PHP - 上传后无法保存14mb加文件的压缩图像

时间:2013-10-09 10:10:03

标签: php post upload compression memory-limit

我正在使用上传用户的图片,然后在完整尺寸图片上传完成后,我制作了一个压缩副本,用作要显示的缩略图。一切正常,除非我尝试上传大于13-14MB的文件。对于大于此值的文件,原始完整大小的文件将进入服务器,但不会创建缩略图。

上传和压缩的代码是:

function compress_image($source_url, $destination_url, $quality) {
    $info = getimagesize($source_url);
    if ($info['mime'] == 'image/jpeg'){$image = imagecreatefromjpeg($source_url);}
    else if ($info['mime'] == 'image/gif'){$image = imagecreatefromgif($source_url);}
    else if ($info['mime'] == 'image/png'){$image = imagecreatefrompng($source_url);}
    imagejpeg($image, $destination_url, $quality);
    return $destination_url;
}


if(isset($_POST['folder'])){
    $filename = $_SERVER['HTTP_X_FILE_NAME'];
    $final_img = $_SESSION['dir']."/".$_SESSION['folder']."/".$filename;

    // UPLOAD FULL IMAGE
    if (file_put_contents($final_img, file_get_contents('php://input'))){

    // CREATE COMPRESSED THUMBNAIL
    if(compress_image($final_img, $_SESSION['dir']."/".$_SESSION['folder']."/thumbs/".$filename, 50)){
        // continue
    }
    else{
        // error
    }

}
else {
    // no post
}

我原本以为这是由于帖子或内存限制所以我在我的php.ini文件中尝试了多种配置,甚至达到以下几项(并使用phpinfo()检查了值并更新了它们)但又没有运气。

post_max_size = 1G
upload_max_filesize = 1G
memory_limit = 1G

1 个答案:

答案 0 :(得分:0)

所有已排序的,似乎根目录中的php.ini文件未在其所在的子目录中使用。通过在文件本身中设置它们,如下所示它现在可以工作:

ini_set('memory_limit','1G');
ini_set('post_max_size','1G');
ini_set('upload_max_filesize','1G');