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

M3 Mac上Docker Laravel容器开启PhpStorm Xdebug监听触发段错误

M3 MacBook Pro上Docker Laravel容器开启Xdebug调试触发段错误(Segmentation fault 11)

在M3 MacBook Pro上使用PhpStorm调试特定Docker Laravel容器时,开启Xdebug监听后容器内进程会触发段错误(Segmentation fault (11)),报错信息如下:

[core:notice] [pid 7] AH00052: child pid 2764 exit signal Segmentation fault (11)

此前该调试工作流在M2 MacBook Pro上可正常运行。

容器环境配置(docker-compose.yml)

environment:
  APACHE_DOCUMENT_ROOT: /var/www/html/public/
  PHP_EXTENSION_XDEBUG: 1
  PHP_EXTENSION_MONGODB: 1
  PHP_EXTENSION_JSON: 1
  PHP_EXTENSION_GD: 1
  PHP_EXTENSION_PDO_SQLITE: 1
  PHP_INI_MEMORY_LIMIT: 256M
  PHP_INI_XDEBUG__MODE: "develop,debug"
  PHP_INI_XDEBUG__CLIENT_HOST: "host.docker.internal"
  PHP_INI_XDEBUG__START_WITH_REQUEST: "${XDEBUG:-yes}"
  PHP_IDE_CONFIG: "serverName=app.local"

当XDEBUG设为yes启动容器时,API请求可正常处理,但开启PhpStorm调试监听后必然触发上述错误,完全无法使用调试功能。Docker引擎资源分配情况见附图。

可能的解决方向

  • 检查Xdebug版本兼容性:M3为ARM64架构,确认容器内Xdebug版本是否适配ARM64,建议升级到3.2+的最新稳定版,旧版本可能存在ARM64下的调试兼容性问题。
  • 调整Docker资源分配:尝试增加Docker的CPU、内存配额,段错误可能和资源不足或架构适配时的资源冲突有关。
  • 修改Xdebug启动模式:将PHP_INI_XDEBUG__START_WITH_REQUEST设为trigger,通过浏览器插件或自定义请求头手动触发调试,避免进程启动时默认加载Xdebug导致冲突。
  • 更换基础镜像:如果当前使用的PHP镜像未针对ARM64优化,换成官方支持arm64v8的镜像(如php:8.2-apache-bookworm),减少架构模拟带来的问题。
  • 排查扩展冲突:暂时禁用PHP_EXTENSION_MONGODB等非必要扩展,确认是否是Xdebug与其他扩展的兼容性问题,再逐步恢复排查冲突源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:56:03