拉拉维尔 5.2 干预图像 500 服务器错误

10

当我上传大图像(4.2 MB)时,Intervention Image抛出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。当我注释掉这个功能时,它可以正常工作 :/


有没有办法获取一个描述性的错误信息?我相信它会抛出更多的内容,而不仅仅是说500服务器错误。在PHP中打开错误和日志记录。 - astroanu
5个回答

19

我曾遇到同样的问题,但只增加upload_max_filesize是不够的。

我还将memory_limit增加到256M并重新启动了服务器。然后使用Intervention处理图片就没有问题了。 [上述更改在php.ini文件中]

您可能需要根据您使用的文件容量来更改upload_max_filesizememory_limit


我也遇到了同样的问题,已经增加了所有提到的字段但仍然不起作用。奇怪的是它可以处理 10mb 的图像,但对于 5mb 的图像却会抛出错误。 - ÛmÄîr MÄlîk
查看服务器错误日志并根据其应用修复。 - Janaka R Rajapaksha

8
今天在使用Intervention Package调整图像大小时,我在Laravel 5.5中遇到了同样的问题,具体代码如下:
Image::make($image_tmp)->save($image_path);

我在服务器上没有访问php.ini文件的权限,并且服务器需要时间进行更新,因此我暂时在我的控制器文件中像下面这样在函数本身中增加了内存限制:

在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);
}

希望这篇文章能在未来对某些人有所帮助!

6
我在使用Laravel 5.1和Intervention Image库时遇到了同样的问题。我的问题不是上传部分,而是Image::make($file)这一行。
我尝试更改以下值: upload_max_filesize从2M到32M post_max_size从2M到32M
但没有解决错误。 所以我增加了memory_limit到256M。
这解决了我的问题。我的假设是,即使我的图像大约6Mo,图像库也需要大量的内存来使用它。

4

编辑您的php.ini文件:

upload_max_filesize = 40M

post_max_size = 40M

也许您的post_max_size小于4MB。然后重新启动服务器。

我认为ImageManagerStatic的最大文件大小为4MB。我在哪里可以编辑这个限制呢? - Buglinjo

1
我尝试了所有的解决方案,但忘记了写入我的文件使用Image;,这个方法可行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接