Laravel 5.4+Voyager 1.1后台背景图更新报错问题咨询
解决Laravel 5.4 + Voyager 1.1后台背景图更新报错的问题
嘿,我之前在Laravel 5.4搭配Voyager 1.1做项目的时候,也碰到过几乎一模一样的报错!这个问题确实存在,大概率是你在配置或者操作过程中遗漏了几个关键步骤,下面给你梳理一下排查方向和解决办法:
检查文件存储的基础配置
这是最常见的触发原因:- 先确认
.env文件里的APP_URL是否正确设置,本地开发应该是APP_URL=http://localhost:8000,生产环境要填写你的实际域名; - 执行
php artisan storage:link,把Laravel的storage/public目录软链到public/storage——Voyager默认会把上传文件存在这个路径,没做软链的话系统根本找不到文件; - 给
storage和public目录设置正确权限,Linux服务器可以运行chmod -R 755 storage public,确保服务器拥有写入权限。
- 先确认
排查上传操作和文件存在性
- 你在Settings菜单上传背景图时,是不是确实选中了本地文件?有时候误操作会导致提交空的文件路径,直接触发
Unable to find file ()报错; - 上传完成后,去
public/storage目录下找找有没有刚才上传的图片,如果没有,说明上传过程本身就失败了,回到第一步重新检查权限和软链配置。
- 你在Settings菜单上传背景图时,是不是确实选中了本地文件?有时候误操作会导致提交空的文件路径,直接触发
修复Voyager 1.1的已知小BUG
因为Voyager 1.1是比较老的版本,和Laravel 5.4的兼容性存在一些小问题:- 打开
vendor/tcg/voyager/src/Controllers/VoyagerSettingsController.php,找到处理设置更新的方法; - 在处理
admin_background_image的代码块前,添加判断:if ($request->hasFile('admin_background_image')),确保只有存在上传文件时才执行读取操作,避免空路径传递。
- 打开
清除缓存重置状态
有时候缓存会导致路径读取异常,运行以下命令清除缓存:php artisan cache:clear php artisan config:clear php artisan view:clear清除后重新登录后台,再尝试上传背景图。
按照上面的步骤排查下来,基本就能解决这个报错了。
内容的提问来源于stack exchange,提问作者Ariel Pepito
相关产品推荐
相关产品推荐

