在PHP-FPM中使用Xdebug的人应该很多,但是在Swoole中使用Xdebug的人还是很少的。原因是Swoole扩展明确声明与Xdebug扩展冲突。幸运的是,我们的社区成员提供了一个Sdebug。这里要感谢@mabu233和@huanghantao的兼容性,让Xdebug可以在Swoole环境下断点使用。调试前,Swoole文档中补充了Sdebug的安装。Sdebug的README也做了修改,介绍了如何安装,但是都只是简单说明了如何成功加载扩展,并没有详细说明配置。先说一下如何安装Sdebug,以避免Swoole检测到Xdebug警告,所以扩展注册的名字是Sdebuggitclonegit@github.com:swoole/sdebug.git-bsdebug_2_9--depth=1cdsdebugphpize./configuremakecleanmakemakeinstall步骤很简单,clone源码,进入目录然后编译如果你的PHP是普通安装,不用修改默认位置等,也可以直接运行目录下的脚本:./重建。sh如果你的phpize不是默认路径,请使用绝对路径;同样的php-config需要使用--with-php-config=加上你的绝对路径编译成功后需要在php.ini中加载扩展zend_extension=xdebug。so编译后生成的so文件名还是xdebug,检查是否加载成功。在xdebug.remote_enable=1xdebug.remote_autostart=1xdebug.remote_host=localhostxdebug.remote_port=8000xdebug.idekey="xdebug"中加入这几个配置项大侠很难的一个配置,很多人在使用Sdebug的时候都会遇到需要解决的问题,如果是不行,也不好投诉。其实你的姿势不对,配置项没加或者加错了。如果需要配合PhpStorm,需要设置PhpStormPreferences|的配置语言和框架|PHP|debug1就是在我们不加断点的时候自动给第一行断点。2是修改配置的remote_port端口。偏好|语言和框架|PHP|ServersAddaservice接着右上角Addadebughere,选择PHPRemoteDebugserver,选择我们刚刚创建的server,IDEkey填入我们php.ini中配置的xdebug,然后我们来试试一波看看它是否有效。//创建Server对象,监听127.0.0.1:9501端口$server=newSwooleServer('127.0.0.1',9501);//监听连接入口事件$server->on('Connect',function($server,$fd){echo"Client:Connect.n";});//监听数据接收事件$server->on('Receive',function($server,$fd,$from_id,$data){var_dump($data);$server->send($fd,"Server:".$data);});//监听连接关闭事件$server->on('Close',function($server,$fd){echo"Client:Close.n";});//启动服务器$server->start();点击右上角的绿色小虫,进入Debug状态,启动我们的服务,会发现Server对象在第4行的地方自动断掉了然后下一步...启动后,我们使用telnet连接,发送消息,断点会进入这里的Connect,然后我们进行下一步,终端会输出Connect,然后我们会去到var_dump的地方,就可以看到$data的值为11111rn然后是HTTPServer$http=newSwooleHttpServer('0.0.0.0',9501);$http->on('request',function($request,$response){var_dump($request->server);$response->header("Content-Type","text/html;charset=utf-8");$response->end("
