Laravel 9使用imanghafoori1/laravel-video包视频流报错求助
解决Laravel 9中laravel-video包视频流文件找不到的问题
针对你遇到的fopen(...) No such file or directory错误,按以下步骤排查修复:
检查文件路径拼接逻辑
确认$video->file_path的格式:如果它的值开头带了斜杠(比如/videoFiles/...),用storage_path()拼接后会生成无效路径(比如C:...\storage\/videoFiles...)。确保file_path是相对storage目录的路径,比如videoFiles/ui/2024-02-11-1-I6bnWsI8J0-128210 (Original).mp4,不带前置斜杠。验证生成的物理路径是否正确
在控制器方法里临时添加调试代码,输出最终路径:public function stream(Video $video) { $path = storage_path($video->file_path); dd($path); // 输出路径后手动检查是否存在该文件 VideoStreamer::streamFile($path); }复制输出的路径到文件管理器,确认文件真的存在,注意文件名的大小写、空格、特殊字符(比如括号)是否完全匹配。
确认文件实际存储位置
如果视频文件是上传到storage/app/public目录(通过Storage::disk('public')存储),那么路径拼接应该改为:$path = storage_path('app/public/' . $video->file_path);如果文件存在于
public目录而非storage,则改用public_path()拼接:$path = public_path($video->file_path);检查文件权限
Windows环境下,确保web服务器进程(比如IIS、Apache)拥有该视频文件及所在文件夹的读取权限;Linux环境下,设置storage目录的权限为755,并确保文件所属用户与web服务器一致(比如www-data)。
内容的提问来源于stack exchange,提问作者Laravel Learner
相关产品推荐
相关产品推荐

