MacOS Big Sur下MAMP配置Xdebug v3.1.0报socket错误19如何解决?

问题描述
在Mac OS X Big Sur环境中使用MAMP配置Xdebug v3.1.0时,遇到socket创建失败问题,错误提示为Operation now in progress (19)。已关闭系统防火墙,先后尝试9000、9003、57700等多个端口均未成功。
使用sudo lsof -nP -iTCP -sTCP:LISTEN命令查询端口占用情况,确认所有测试端口均处于可用状态。
相关配置
php.ini中xdebug段配置如下:
[xdebug] xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request=yes xdebug.discover_client_host=false xdebug.idekey="netbeans-xdebug" xdebug.output_dir="/Applications/MAMP/logs" xdebug.log="/Applications/MAMP/logs/xdebug.log" zend_extension="/usr/local/Cellar/php@7.4/7.4.24/pecl/20190902/xdebug.so"
xdebug.log日志内容如下:
[90419] Log opened at 2021-10-07 18:49:30.763013 [90419] [Step Debug] INFO: Connecting to configured address/port: 127.0.0.1:9003. [90419] [Step Debug] WARN: Creating socket for '127.0.0.1:9003', poll success, but error: Operation now in progress (19). [90419] [Step Debug] ERR: Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port) :-( [90419] Log closed at 2021-10-07 18:49:30.764597
问题原因与解决方法
原因
该错误的核心原因是Xdebug作为客户端发起调试连接时,IDE端没有在配置的9003端口启动监听,不是端口被占用或者系统网络层面的拦截问题。端口可用的检查结果恰恰说明IDE没有在对应端口监听等待连接。
解决步骤
- 确认IDE调试监听配置
打开使用的NetBeans,进入偏好设置-PHP-调试选项卡,检查以下配置:- 调试端口是否设置为9003,和php.ini中的xdebug.client_port一致
- Session ID是否设置为
netbeans-xdebug,和php.ini中的xdebug.idekey一致 - 勾选"停止在第一行"方便调试验证
- 手动启动IDE调试监听
在NetBeans中打开对应项目,点击工具栏的"调试项目"按钮,或者按快捷键Command+Fn+F5,此时IDE才会启动9003端口的监听。 - 验证端口监听状态
启动监听后再次执行sudo lsof -nP -iTCP:9003 -sTCP:LISTEN,确认可以看到NetBeans相关的进程在占用9003端口。 - 验证调试连通性
在项目代码中打断点,浏览器访问对应项目地址,即可触发Xdebug向IDE发送连接请求,完成调试。
如果调整后还是无法连接,可以尝试额外修改以下配置:
- 将php.ini中的
xdebug.client_host改为localhost,部分MAMP环境下127.0.0.1的路由存在异常 - 关闭Mac系统的"私有地址"功能,该功能会干扰本地回环地址的连接
- 确认使用的PHP版本是MAMP自带的版本,而不是brew安装的PHP版本,避免zend_extension路径指向错误的PHP扩展目录
内容的提问来源于stack exchange,提问作者Celio Caulada Jr.
相关产品推荐
相关产品推荐

