Ajax PHP-上载后无法保存14mb以上文件的压缩图像

Ajax PHP-上载后无法保存14mb以上文件的压缩图像,ajax,php,post,upload,compression,memory-limit,Ajax,Php,Post,Upload,Compression,Memory Limit,我上传用户的图像,然后一旦完整大小的图像上传完成,我会制作一个压缩副本,用作要显示的缩略图。除了我尝试上传大于13-14MB的文件外,所有这些都可以正常工作。对于大于此值的文件,原始的全尺寸文件会进入服务器,但不会创建缩略图 我的上传和压缩代码是: function compress_image($source_url, $destination_url, $quality) { $info = getimagesize($source_url); if ($info['mime

我上传用户的图像,然后一旦完整大小的图像上传完成,我会制作一个压缩副本,用作要显示的缩略图。除了我尝试上传大于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
}
我最初认为这是由于post或内存限制,所以在我的
php.ini
文件中尝试了几种配置,甚至达到了以下配置(并使用
phpinfo()
检查了这些值,它们被更新了),但还是没有成功

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

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

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

Bug这是非常危险的,因为如果用户试图上传一个巨大的图像,你的服务器将不会很高兴,压缩可能会失败。也许你应该定义一个较低的上传最大文件大小。嘿,对不起,我应该澄清一下-我只是用这些较大的值来表示它不起作用-我现在在实际的php文件中使用了较低的值