Laravel 5.2干预图像500服务器错误

时间:2015-12-31 08:54:06

标签: laravel laravel-5.2 intervention

当我上传大图像(4.2 MB)干预图像投掷500错误...

private function resizeImage($path, $imgName){
    $sizes = getimagesize($path.$imgName);
    if($sizes[0] > $sizes[1]){
        ImageManagerStatic::make($path.$imgName)->fit(920,474)->insert(public_path() . "/uploads/applications/watermark.png",'bottom-right', 30, 30)->save($path."1_".$imgName);
    }else{
        ImageManagerStatic::make($path.$imgName)->heighten(474)->insert(public_path() . "/uploads/applications/watermark.png",'bottom-right', 30, 30)->save($path."1_".$imgName);
    }
    ImageManagerStatic::make($path.$imgName)->fit(440,226)->save($path."2_".$imgName);
    File::delete($path.$imgName);
}

适用于较小的文件。 upload_max_filesize=10M。当我评论这个功能时它起作用:/

5 个答案:

答案 0 :(得分:12)

我遇到了同样的问题而增加upload_max_filesize还不够。 我还增加了memory_limit to 256M并重新启动了服务器。然后图像与干预一起工作。 [以上更改在php.ini文件中]

您可能希望根据您使用的文件容量更改upload_max_filesizememory_limit

答案 1 :(得分:5)

我在Laravel 5.1和干预图像库中遇到了同样的问题。 在我的例子中,问题来自Image :: make($ file)行而不是上传部分。

我尝试更改以下值:

  • upload_max_filesize从2M到32M
  • post_max_size从2M到32M

不接受我收到的错误。

所以我增加:

  • memory_limit为256M

它解决了我的问题。 我的假设是即使我的图像大约是6Mo,图像库也需要大量的内存来使用它。

答案 2 :(得分:4)

编辑你的php.ini:

upload_max_filesize = 40M

post_max_size = 40M

也许你的post_max_size低于4MB。然后重启服务器。

答案 3 :(得分:3)

今天我在Laravel 5.5中遇到同样的问题,同时使用Intervention Package在下面的代码中精确调整图像大小:

Image::make($image_tmp)->save($image_path);

我无法访问服务器中的php.ini文件,服务器需要时间进行更新,因此在我的Controller文件中暂时增加了功能本身的内存限制,如下所示:

在ImagesController.php文件中: -

public function addImage(Request $request){

    // Temporarily increase memory limit to 256MB
    ini_set('memory_limit','256M');

    $extension = Input::file('image')->getClientOriginalExtension();
    $fileName = rand(111,99999).'.'.$extension;
    $image_path = 'images/'.$fileName;
    $image_tmp = Input::file('image');
    Image::make($image_tmp)->resize(1182, 1506)->save($image_path);
}

希望将来能帮到某人!

答案 4 :(得分:0)

我尝试了所有解决方案,但忘记使用Image写入文件;这行得通。