Laravel存储文件报错"failed (40: Too many levels of symbolic links)"求助
解决Laravel存储链接403与"Too many levels of symbolic links"问题
步骤1:清理错误的符号链接
- 登录Hostinger VPS终端(CloudPanel内置终端或SSH工具),进入Laravel项目根目录(替换为你的实际项目路径,比如
/var/www/your-domain.com):cd /var/www/your-domain.com - 删除public目录下的错误storage链接:
rm public/storage - 检查
storage/app/public目录是否存在循环链接(比如误创建了指向自身的storage),如果有则删除:rm -rf storage/app/public/storage
步骤2:重新创建正确的绝对路径符号链接
使用绝对路径创建链接,避免相对路径导致的层级循环问题:
ln -s /var/www/your-domain.com/storage/app/public /var/www/your-domain.com/public/storage
注意:将
/var/www/your-domain.com替换为你实际的Laravel项目根目录路径。
步骤3:修复目录权限
403错误通常和权限有关,执行以下命令设置正确权限:
# 将目录归属给Web服务器用户(CloudPanel默认是www-data) chown -R www-data:www-data storage/ public/ # 设置基础目录权限 chmod -R 755 storage/ public/ # 开放存储目录的写入权限 chmod -R 775 storage/app/public/
步骤4:确认Web服务器允许跟随符号链接
在CloudPanel中进入你的站点设置,编辑Nginx/Apache配置:
- 若使用Nginx,确保server块内包含允许符号链接的配置:
location / { try_files $uri $uri/ /index.php?$query_string; disable_symlinks off; } - 保存配置后重启Web服务器(CloudPanel面板内有重启按钮)。
步骤5:清除Laravel缓存
php artisan cache:clear php artisan config:clear
完成以上步骤后,重新访问https://你的域名/storage/icons/目标图片.png,应该可以正常加载。
内容的提问来源于stack exchange,提问作者Zaak
相关产品推荐
相关产品推荐

