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

M1 Mac运行Docksal出现Xdebug报错及数据库容器故障

问题原因

两个问题相互独立,根因分别如下:

  • Xdebug刷屏报错属于非阻断性提示:Xdebug 3默认开启Step Debug调试模式,但本地没有运行监听9000端口的IDE调试服务(比如PhpStorm、VS Code的PHP调试插件没启动监听),因此会反复输出连接失败日志,这个问题本身不会导致站点功能异常,仅会污染命令行输出。
  • 站点无法访问、数据库连接失败是M1芯片(ARM64架构)的镜像兼容问题:你使用的Docksal 1.16版本默认拉取的MySQL 5.7.25镜像仅有x86_64架构构建,没有原生ARM64版本,Docker Desktop通过Rosetta 2转译运行这个旧版本镜像时,会触发镜像内置Go运行时的线程创建panic,就是你日志中看到的runtime.newosproc相关崩溃栈,db容器启动后会立刻异常退出,才会导致Drush连接数据库失败。docker ps显示容器健康是状态刷新延迟导致的假象,实际db容器已经处于反复崩溃重启的状态。
修复步骤

按顺序操作即可:

  • 处理Xdebug日志刷屏问题
    在项目根目录执行以下命令关闭非必要的Xdebug调试模式,不需要调试时保持关闭即可从根源解决报错:
    fin config set XDEBUG_MODE=off
    fin project restart cli
    
    后续需要用Xdebug调试时,再把值改成debug,develop重启cli容器即可。
  • 修复数据库容器崩溃问题,二选一即可:
    • 方案一(推荐):升级Docksal到适配M1芯片的版本
      Docksal从1.18版本开始正式支持Apple Silicon芯片,默认拉取ARM64原生构建的数据库镜像,不存在转译崩溃问题。
      先备份出问题项目的数据库:
      fin db dump ~/site_db_backup.sql
      
      执行全局Docksal升级:
      fin update
      
      升级完成后进入出问题的项目目录,重置数据库服务:
      fin project reset db
      
      重置完成后把之前备份的数据库导回:
      fin db import ~/site_db_backup.sql
      
    • 方案二(不升级Docksal临时修复):手动替换数据库镜像为ARM兼容版本
      同样先备份数据库,然后在项目根目录执行命令替换数据库镜像为支持ARM64的MariaDB 10.6版本:
      fin config set DB_IMAGE=docksal/mariadb:10.6
      fin project stop
      fin project start
      
      如果启动后还是报错,再执行fin project reset db重置数据库后导入备份即可。
  • 修复验证
    执行fin ps确认db容器状态为正常Up,执行fin drush sqlc可以正常进入数据库交互命令行,站点访问无报错、命令行无Xdebug连接刷屏提示即为修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:15:35