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

Laravel如何实现主域名与子域名项目存储路径映射

Laravel共享主机双项目跨目录存储映射配置方法

不需要修改config/path.php,仅调整管理后台项目的config/filesystems.php配置,配合基础权限校验即可实现需求,改动范围小且不会干扰两个项目的正常运行。

前置准备

  • 确认两个项目归属同一个服务器账号,共享主机下同个cPanel账号创建的站点默认满足该条件,保证后台项目的PHP进程对主站/home/onomy/public_html/storage目录有读写权限即可;若遇权限报错将该目录权限设为755,禁止设置777权限避免安全风险。
  • 提前进入主站项目根目录(/home/onomy/public_html)执行php artisan storage:link命令,生成storage目录到public目录的软链接,确保后续上传的文件可以通过主站域名正常访问。

具体配置操作

只需要修改部署在/home/onomy/portal目录下的管理后台项目的config/filesystems.php文件,找到负责存储公开上传文件的public磁盘配置,将默认指向后台自身目录的存储根路径、访问地址替换为主站的对应绝对路径即可:

// 框架默认public磁盘配置参考
'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
    'throw' => false,
],

// 修改后的配置
'public' => [
    'driver' => 'local',
    'root' => '/home/onomy/public_html/storage/app/public',
    'url' => 'https://example.com/storage',
    'visibility' => 'public',
    'throw' => false,
],

修改完成后进入后台项目根目录执行php artisan config:clear清除配置缓存,后续后台调用Storage::disk('public')完成的所有上传、读取操作,都会直接写入主站的存储目录,生成的文件访问地址也会自动使用主站域名,可直接在前台调用。

如果有私有文件存储需求,单独在filesystem配置里新增一个磁盘,root指向主站storage下对应的非公开目录即可,不要修改默认的local磁盘配置,避免框架自身生成的临时文件存错位置。

不要修改config/path.php的原因

config/path.php是Laravel框架用来定义自身运行基础路径的配置文件,里面存储的是框架缓存、日志、会话、编译视图等核心运行文件的路径规则。如果修改这个文件里的storage相关配置,会导致后台项目所有运行时生成的临时文件、缓存、会话数据全写入主站目录,轻则出现路径找不到的报错,重则两个项目的缓存、登录会话互相覆盖,直接导致后台登录状态异常、功能报错。
仅修改filesystem中的业务磁盘配置,只会影响你上传的业务文件存储位置,框架自身的运行路径完全不受影响,稳定性更高。

常见异常处理

如果配置完成后出现open_basedir restriction类报错,是共享主机默认开启了目录访问限制,只需要到主机面板的PHP配置页面,将/home/onomy/public_html/storage路径加入open_basedir的允许访问列表即可解决。

内容的提问来源于stack exchange,提问作者akif akram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:06:26