Laravel php artisan storage:link远程服务器失效问题求助
解决Laravel远程服务器storage:link异常问题
问题分析
本地php artisan storage:link可正常执行,但远程服务器上要么提示「link already exists」,删除目标目录后又报错symlink(): No such file or directory,核心原因大概率是目标存储目录缺失、路径配置冗余斜杠导致解析异常或服务器权限限制。
解决方案
1. 确认目标存储目录存在并配置权限
登录远程服务器,执行以下命令:
# 进入Laravel项目根目录(public_html/app) cd public_html/app # 创建缺失的avatars存储目录 mkdir -p storage/app/public/avatars # 设置目录权限(根据服务器环境调整,755或775均可) chmod -R 755 storage/app/public/avatars
2. 修正filesystems.php路径配置
打开config/filesystems.php,移除links部分路径末尾的冗余斜杠,避免路径解析错误:
'links' => [ public_path('icons') => storage_path('app/public/avatars'), ],
随后清除配置缓存:
php artisan config:clear
3. 手动创建软链接(替代artisan命令)
若执行php artisan storage:link仍报错,直接用Shell命令手动创建软链接:
# 进入项目的public目录 cd public_html/app/public # 创建软链接,将icons指向storage/app/public/avatars ln -s ../storage/app/public/avatars icons
执行完成后,可通过以下命令验证软链接是否创建成功:
ls -la icons
若输出显示icons -> ../storage/app/public/avatars,则说明创建有效。
4. 检查服务器软链接权限
如果是共享主机(如cPanel),需确认主机服务商是否允许用户创建软链接。部分主机默认禁用symlink功能,可联系服务商开启该权限。
验证
上传文件至storage/app/public/avatars后,访问https://app.mydomain.com/icons/[文件名],确认文件可正常显示。
内容的提问来源于stack exchange,提问作者Andrew Olinevich
相关产品推荐
相关产品推荐

