Laravel 8 图像干预:无法将图像数据写入路径

Laravel 8 Image intervention: Can't write image data to path

这就是我尝试使用 image intervention 包的方式:

public function saveImage(string $path, $image)
{
        $file = $image;

        $filename = Str::random(20) . $file->getClientOriginalName();

        $imgResize = Image::make($image);
        $imgResize->heighten(300);

        //dd(is_writable(storage_path('app/public/'.$path)));

        $imgResize->save(storage_path('app/public/'.$path));


        return $destination_path = Storage::disk('local')->put('/'.$path, $image);    
}

不使用图像干预,图像保存成功。当我尝试 save() 它会抛出这个错误:

Intervention\Image\Exception\NotWritableException: Can't write image data to path.

我已经更改了文件夹的权限,但还是不行。

知道是什么原因造成的吗?

编辑:

我早些时候做过 php artisan storage:link,这就是为什么它在不使用图像干预的情况下工作的原因。

我做了 dd(storage_path('app/public/'.$path)); 结果是在同一文件夹中成功保存了普通图像。

我也检查了是否 is_writable 结果是 true.

出于测试目的,我已经将权限更改为 777

我不知道还能做什么才能完成这项工作。

save()方法中添加文件名

$imgResize->save(storage_path('app/public/'.$path.'/'.$filename));

此处是 intervention site

文档中的一些示例

// open and resize an image file $img = Image::make('public/foo.jpg')->resize(300, 200);

// save file as jpg with medium quality $img->save('public/bar.jpg', 60);

// save the same file as jpg with default quality $img->save('public/baz.jpg');

// save the file in png format $img->save('public/bar.png');

// save the image jpg format defined by third parameter $img->save('public/foo', 80, 'jpg');

保存方法实际上需要绝对路径或相对于使用该方法的文件的路径。所以给一个文件名,所有父文件夹都已经创建。使用 storage_path()public_path()base_path()(或 laravel 提供的其他方法)。或来自核心 php.

的任何方法