Laravel+Angular项目本地图片正常线上无法显示问题排查
解决Laravel线上storage图片访问Forbidden问题
针对你遇到的线上图片无法访问提示“Forbidden”、本地正常的情况,按以下步骤排查解决:
检查Web服务器的符号链接权限
- 若使用Apache:在虚拟主机配置文件中添加或确保存在
Options FollowSymLinks和AllowOverride All配置,保存后执行sudo systemctl restart apache2重启服务。 - 若使用Nginx:确认站点配置的
root指向Laravel项目的public目录,同时添加disable_symlinks off;(若之前开启了禁用符号链接),执行sudo systemctl restart nginx重启服务。
- 若使用Apache:在虚拟主机配置文件中添加或确保存在
修正文件/目录的所有者
线上服务器的Web进程用户(通常是www-data、apache或nginx)需要拥有storage目录的访问权限,执行以下命令替换为对应服务器的用户组:chown -R www-data:www-data storage public/storage验证符号链接的正确性
执行ls -l public/storage查看链接指向,确保它正确指向../storage/app/public。如果链接错误,先删除旧链接:rm public/storage再重新创建符号链接:
php artisan storage:link检查.htaccess规则(Apache环境)
确认public目录下的.htaccess文件没有阻止访问storage目录的自定义规则,默认Laravel的.htaccess不会限制该目录访问,若有新增规则需排查调整。处理SELinux权限(若服务器开启)
执行getenforce查看SELinux状态,若显示Enforcing,执行以下命令设置正确的文件上下文:chcon -R -t httpd_sys_content_t storage/ public/storage/若需临时测试,可执行
setenforce 0关闭SELinux,验证图片是否能访问。
内容的提问来源于stack exchange,提问作者Aid Aid
相关产品推荐
相关产品推荐

