SiteGround部署Laravel后访问symbolic link出现403错误如何解决?
解决方案与排查方向
.htaccess配置修复方案
如果是Apache未允许跟随符号链接导致的403错误,可通过修改.htaccess配置解决:
- 编辑站点公共根目录下的
.htaccess文件:默认Laravel项目对应项目内的public目录;若部署时已将public目录内容迁移至SiteGround默认的public_html目录,直接编辑public_html下的.htaccess即可 - 在文件最开头加入以下配置:
Options +FollowSymLinks Options +SymLinksIfOwnerMatch
上述配置适配SiteGround的安全规则,仅允许跟随所有者匹配的符号链接,无需修改全局Apache配置即可生效。
其他可能的排查方向
- 校验软链路径正确性:通过SSH登录主机,在项目根目录执行
ls -la public/storage,确认输出的指向路径为项目真实的storage/app/public目录的绝对路径,避免相对路径错误导致访问异常。 - 校验所有者权限一致性:SiteGround共享主机的Web运行用户与你的cpanel账户同名,需确认软链、
storage/app/public目录、目录内文件的所有者均为你的cpanel账户,若所有者异常可执行chown -R 你的cpanel用户名:你的cpanel用户名 storage/ public/storage修正。 - 校验根目录映射规则:若部署时将Laravel的
public目录内容全部迁移到了SiteGround默认的public_html目录,需确保软链创建在public_html目录下,指向路径为../storage/app/public,而非原项目public目录下的软链。
无软链替代方案
若符号链接始终无法生效,可直接修改Laravel存储配置规避软链依赖:
编辑项目根目录下config/filesystems.php,找到disks.public配置块,将root参数的值从storage_path('app/public')修改为public_path('storage'),修改后执行php artisan config:cache使配置生效。后续上传的公共文件会直接存储到公共可访问目录,无需依赖符号链接。
内容的提问来源于stack exchange,提问作者ParkMoss
相关产品推荐
相关产品推荐

