一.背景介绍
本文主要介绍PHP远程多会话调试的相关内容,分享给大家参考。下面的话就不多说了,我们来看看详细的介绍:
需要解决哪些问题:在断点处调试多个项目时,api.mysite.com项目的REST接口会被www.mysite.com项目调用,在www.mysite.com项目下触发动作时,直接调试api.mysite.com项目的接口更方便。
适用场景:跨项目调试和远程调试比简单的var_dump更方便易用。
二、远程调试配置
Nginx PHP-fpm环境,配置php.ini进行扩展
[Xdebug]Zend _ extension=/usr/local/php 56/lib/php/extensions/no-debug-non-zts-20131226/Xdebug . soxdebug . remote _ enable=1 remote _ handler=dbgpxdebug . remote _ host=localhost Xdebug . remote _ port=9000 debug . idekey=Xdebug注意:CLI环境中的PHP和fpm中的PHP是否使用不同的php.ini配置文件需要配置fpm对应的php.ini。
检查配置是否正确
将远程(fpm所在的主机10.99.1.185)端口9000映射到本地端口9000:
Ssh-CNG-r 9000: localhost :9000[电子邮件保护]在本地安装openssh后,可以直接使用ssh命令
您可以看到服务器上的ssh占用了端口9000
PHPSTORM还需要配置Xdebug,并配置同时启用的多个调试会话,端口为9000,以接受外部请求。
配置与项目相关的路径映射、域名和端口
三、跨会话(项目)调试配置
跨项目调试的核心是将触发Xdebug调试的条件作为参数发送给api.mysite.com项目或其他后续项目。
Www项目代码如下:
frontend.php
?PHP $ personJson=file _ get _ contents(' http://API . mysite.com/后端. PHP ');$ person=JSON _ decode($ personJson);var _ dump($ person);api项目代码如下:
backend.php
?phpclass Person { public $ Name公共$ Email} $ Person=new Person();$ person-Name=' Maarten ';$ person-Email='[Email protected]';echo JSON _ encode($ person);www项目需要修改,增加了xdebug触发远程调试所需的网络请求参数:
?php $ debuggingQuerystring=if(isset($ _ GET[' XDEBUG _ SESSION _ START ']){//XDEBUG $ debuggingQuerystring=' XDEBUG _ SESSION _ START='。$ _ GET[' XDEBUG _ SESSION _ START '];} if(isset($ _ COOKIE[' XDEBUG _ SESSION ']){//XDEBUG(COOKIE)$ DeBuggingqueryString=' XDEBUG _ SESSION _ START=PHPSTORM ';} if(isset($ _ GET[' start _ debug ']){//Zend调试器$ debuggingQuerystring=' start _ debug='。$ _ GET[' start _ debug '];} $ personJson=file _ get _ contents(' http://API . mysite.com/后端. php '?$ debuggingQuerystring);$ person=JSON _ decode($ personJson);var _ dump($ person);自有项目可以将cookie参数添加到一般网络请求封装类中:
curl_setopt($this-ch,CURLOPT_COOKIE,' XDEBUG _ SESSION=XDEBUG ');
四.调试过程
确保调试参数已经转发到api接口,增加可以同时调试的会话数,开始调试和监控,打开服务器Xdebug。五.总结
以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。
不及物动词参考
用PhpStorm进行https://confluence.jetbrains.com/display/PhpStorm/Simultaneous调试会话
https://paper.seebug.org/308/