Laravel线上服务器symlink创建成功后浏览器无法访问storage文件URL
Laravel 线上服务器 storage 软链接无法访问资源排查方案
- 第一步:检查 Web 服务器软链接支持配置
- Nginx 环境需要确认站点配置中未禁用软链接,在对应
server或location块添加/修改配置:disable_symlinks off;,配置示例:location / { root /home/www/thetripclub/public; index index.php index.html; disable_symlinks off; } - Apache 环境需要确认站点
.htaccess或虚拟主机配置中开启了Options FollowSymLinks
- Nginx 环境需要确认站点配置中未禁用软链接,在对应
- 第二步:校验目录与文件权限
线上环境默认权限控制较严格,需保证项目目录的所有者与 Web 服务器运行用户(通常为www、www-data、apache等)一致,且文件有可读权限,执行以下命令修正:# 修正目录所有者,需替换为你服务器实际的Web运行用户 chown -R www:www /home/www/thetripclub # 修正目录权限 chmod -R 755 /home/www/thetripclub/storage chmod -R 755 /home/www/thetripclub/public - 第三步:校验软链接路径有效性
执行命令ls -la /home/www/thetripclub/public/storage查看软链接指向的路径是否为绝对路径、且指向正确的storage/app/public目录。若为相对路径或指向错误,可手动创建绝对路径软链接覆盖原有软链接:ln -sf /home/www/thetripclub/storage/app/public /home/www/thetripclub/public/storage - 第四步:校验 Web 根目录与静态资源规则
确认 Nginx/Apache 配置中站点的root参数指向的是项目的public目录,而非项目根目录,即路径为/home/www/thetripclub/public,否则无法正确匹配/storage/xxx静态资源路径。 - 第五步:校验 Laravel 配置与路由冲突
检查config/filesystems.php中public磁盘的url配置是否为默认的/storage,未被自定义修改;同时检查是否存在路由前缀为/storage的自定义路由,该类路由会优先于静态资源生效,导致资源无法访问。
内容的提问来源于stack exchange,提问作者GRV
相关产品推荐
相关产品推荐

