You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel在cPanel执行storage:link命令报symlink文件不存在错误

解决cPanel下Laravel存储链接创建失败及自定义访问路径问题

问题背景

在cPanel终端执行php artisan storage:link时提示symlink(): No such file or directory错误,尝试路由调用Artisan命令、删除public_html下的storage文件夹均无效。已在AppServiceProvider.php的register()方法中绑定自定义public路径:

$this->app->bind('path.public', function() {
   return base_path('../public_html');
});

public_html下的index.php已正确指向Laravel核心目录,需求是实现example.com/folderimage/abc.jpg形式的访问路径,而非默认的example.com/storage/folderimage/abc.jpg。

解决方案

1. 手动创建指定目录的软链接(核心解决访问路径需求)

默认的storage:link命令会生成public_html/storage指向laravel/storage/app/public,不符合直接访问子目录的需求。需直接将目标存储目录链接到public_html根目录:

# 替换为你服务器的实际绝对路径
ln -s /home/你的账户名/laravel/storage/app/public/folderimage /home/你的账户名/public_html/folderimage
  • 可通过cPanel文件管理器查看账户根路径,通常格式为/home/xxx/
  • 执行前确保laravel/storage/app/public/folderimage目录已存在,不存在则先创建:
    mkdir -p /home/你的账户名/laravel/storage/app/public/folderimage
    

2. 调整Laravel存储配置(确保URL生成正确)

修改config/filesystems.php中public磁盘的配置,让Storage::url()生成不带storage前缀的URL:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL'), // 原配置通常为env('APP_URL').'/storage',改为直接使用APP_URL
    'visibility' => 'public',
],

修改后执行配置缓存刷新:

php artisan config:cache

3. 修复默认storage:link报错问题(若需保留默认storage链接)

如果仍需要默认的storage访问路径,用绝对路径手动创建软链接即可解决Artisan命令的路径解析问题:

ln -s /home/你的账户名/laravel/storage/app/public /home/你的账户名/public_html/storage

关键说明

cPanel环境下,Artisan命令可能因自定义public路径的解析权限问题无法自动创建软链接,直接使用服务器绝对路径创建是最可靠的方式。若需要多个存储子目录直接映射到public根目录,重复步骤1即可。

内容的提问来源于stack exchange,提问作者Dragon Chs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:27:23