Laravel Intervention / image memory_limit

时间:2017-12-04 13:18:50

标签: image laravel laravel-5 image-resizing intervention

在我的版本中,我有120MB的图像。一张图片 - 接近3 MB。我尝试使用此代码来调整它们的大小:

public function images_zip(Request $request){
    if($request->width < 1 || $request->hight < 1 || $request->width > 2000 || $request->hight >2000){
        return Redirect::back()->withErrors(['Некорректные входные данные']);
    }
    $files = Storage::disk('images')->files('/'.$request->name.'/image');
    $mime_types = array('image/gif','image/jpeg','image/png','image/svg+xml');
    ini_set('memory_limit','128M');
    foreach ($files as $file){
        if(in_array(File::mimeType($file),$mime_types)) {
            $img = Image::make(public_path() . '/' . $file);
                $img->resize($request->width, $request->hight);
                $img->save(public_path() . '/' . $file);
                $img->destroy();
        }
    }
    return \redirect()->back();
}

但我接受了这个错误 -

Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)

我尝试使用 - &gt; destroy()和ini_set('memory_limit','128M'),就像人们说的那样,但它没有帮助。我的服务器有128MB内存。请帮帮我!

2 个答案:

答案 0 :(得分:0)

PHP可能会引发此错误。尝试更改php.ini文件中的这些行并重新启动服务器:

memory_limit = 128M

您还应该检查以下一行:

max_execution_time = 30

这是脚本的最长执行时间,也可能导致问题。

但请注意134217728 bytes正是128mb。所以,这根本不应该有效。如果你保留相同的代码,你可能需要更多的内存。

答案 1 :(得分:0)

您可以尝试编辑/etc/php5/fpm/php.ini:

; Old Limit
; memory_limit = 512M

; New Limit
memory_limit = 2048M

你需要重启apache。