Laravel 8 未找到存储移动文件

Laravel 8 Storage move file not found

我正在尝试将文件从临时路径移动到正确路径。但是,无论我尝试什么,它总是发回此文件未找到错误:

League\Flysystem\FileNotFoundException
File not found at path: var/www/html/storage/app/public/covers/tmp/608c07a082451-1619789728/81-536x354.jpeg

我正在使用 sail 因此路径中有 'var/www/html/',即使容器中的此路径没有问题,因为可以从前端获取到达此路径 API这就是临时文件的保存方式。

控制器中的代码如下:

//...
$temp_file = TempFile::where('folder', $cover_folder)->first();
        if ($temp_file) {
            // retrieve file path and target path
            $filepath = storage_path("app/public/covers/tmp/{$temp_file->folder}/{$temp_file->filename}");
            $target_path = storage_path("app/public/covers/{$course->id}/");

            Storage::move($filepath, $target_path);

            $course->cover_img = "{$target_path}/{$temp_file->filename}";
            $course->save();

            // remove temp directory and temp file record
            rmdir(storage_path("app/public/covers/tmp/{$temp_file->folder}/"));
            $temp_file->delete();
        }

此行突出显示的错误回溯:

 Storage::move($filepath, $target_path);

也试过用Storage::disk('public')->move(),或public_storage,或Storage::path(),或只用纯字符串,都不行。

符号链接由 运行 php artisan storage:linkpublic/storage 设置为 storage

我在 laracast、stack overflow 或 github 上搜索了尽可能多的内容,但无法找到解决方案。有人对这个问题有什么想法吗?

真的很感激。

不要使用 storage_path 函数,因为方法 Storage::move( 有前缀路径 [app_path]/storage/app/

 Storage::move("public/covers/tmp/{$temp_file->folder}/{$temp_file->filename}", "public/covers/{$course->id}/");