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

Drupal多域名共享核心文件托管异常问题求助

解决Drupal多站点符号链接下数据库匹配错误的问题

哎,这种多站点用符号链接部署的坑我之前踩过好几次!咱们一步步来排查,肯定能搞定:

1. 先确认站点目录的匹配逻辑(最可能的问题)

Drupal是通过请求的域名来匹配sites目录下的对应配置文件夹的,核心规则是:

  • 先读取sites/sites.php里的自定义映射
  • 找不到的话,自动寻找sites/[完整域名](比如sites/site2.com)
  • 再找不到就 fallback 到sites/default

你说把site1的sites文件夹复制到了site2,那site2的sites目录里大概率只有sites/site1.com和sites/default,而没有sites/site2.com!这时候访问site2.com时,Drupal找不到对应目录,就会用default的配置——而default里的settings.php还是site1的数据库信息,自然显示site1的数据。

解决方法:

  • 在site2的sites目录下创建site2.com文件夹
  • 把你修改好的、对应site2数据库的settings.php放到这个文件夹里
  • 或者如果想用自定义目录名,修改sites/sites.php,添加映射:
    $sites['site2.com'] = 'site2_folder'; // 这里site2_folder是你sites目录下的自定义文件夹名
    

2. 检查settings.php的正确性与缓存

你说修改了settings.php但没用,先确认几个点:

  • 你修改的是不是site2对应目录下的settings.php?比如是不是误改了site1的,或者site2的default目录下的?
  • 数据库配置有没有拼写错误?比如$databases['default']['default']里的database名称、username、password是不是完全对应site2的数据库?
  • 修改后有没有清空Drupal缓存?哪怕你没登录后台,也可以手动删除site2的sites/[对应目录]/files/php下的缓存文件,或者用Drush命令(如果有安装):
    drush cr -l site2.com
    

3. 验证符号链接的路径正确性

虽然你说site2能访问,但还是要确认符号链接是绝对路径还是相对路径——相对路径很容易出问题。比如site2的core符号链接如果是../site1.com/core,那当Web服务器访问site2的根目录时,这个路径是正确的;但如果是相对路径且层级不对,可能会加载到错误的文件(不过这个一般会导致站点报错,而不是数据错误,但还是排查下)。

可以在site2的根目录下执行命令查看符号链接的目标:

ls -l core

确保目标指向site1的core目录的绝对路径,比如/var/www/site1.com/core。

4. 确认Web服务器的虚拟主机配置

  • 检查site2的虚拟主机DocumentRoot是不是指向site2的根目录?比如/var/www/site2.com
  • ServerName是不是设置为site2.com?有没有加www.site2.com的别名?如果有,也要在site2的sites目录下创建www.site2.com文件夹,或者在sites.php里映射
  • 确保Web服务器允许跟随符号链接,比如Apache的配置里有Options FollowSymLinks,Nginx的话有symlink on(不过你能访问站点,这个大概率没问题)

最后再试一次的步骤

  1. 停止Web服务器(比如systemctl stop apache2)
  2. 清理site2的所有缓存文件(删除sites/site2.com/files下的缓存目录)
  3. 启动Web服务器,重新访问site2.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:20:38