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
相关产品推荐
相关产品推荐

