1.安装xdebug
百度去下载对应的xdebug然后安装:
下载的时候注意一个区别文件,后缀有个ts是线程安全模式的,主要还是,一般你通过网页访问的看看你的phpinfo里面的serverapi.
TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查
NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查
我使用Apache+PHP的模式下,一般是把PHP作为一个Module load到apache中,那么以apache父进程-多子进程的工作模式,是需要进行线程安全检查的,所以如果是以这种方式执行php,选择ts版本
举例:
当然像nginx用的是fastcgi,用php-fpm管理php执行,则不需要进行线程安全检查,则选择nts版本的php,
下面这个就是nginx的用fastcgi的:
关于这个版本选择有新发现:
不要选太新的版本,我php7.2的环境,IDE用的是JetBrains PhpStorm 10.0.3用了很多新版的xdebug都不行,(虽然上面写着都支持php7.2,但是我觉得可能是和phpstrom不兼容的问题,原因就是:页面确实能卡主,代表确实有监听到了,,,但是到了phpstrom里面界面不会显示具体的数值信息.),最后用了Xdebug 2.6.0的版本才可以.
tar zxvf xdebug.* //解压文件。
cd xdebug.* //进入xdebug 目录。
3:phpize (看看这边会对phpize这个size更加理解: 什么是phpize及其用法_jonot的博客-优快云博客_phpize)
4://编译
./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config //找不到可以用 find / -name php-config来查找路径
make
make install
5.编译后生成xdebug.so文件 自己看phpinfo,或者安装配置信息里面带有extension 字眼的里面会有那个路径
然后php.ini里面加入配置
zend_extension=xdebug.so
(这一步请注意下extension=xdebug.so 这样写法会有问题,不知道为什么,百度了一下都是说用上面的写法,不知道为什么.)
6.在php.ini文件中加入配置
[xdebug]
xdebug.remote_enable=1 #允许远程调试
xdebug.remote_host=192.168.135.220 #远程调试的机子(phpstrom所在的机子ip)
xdebug.remote_port=9000 #远程调试端口(phpstrom所在的机子,设置的监听端口),这个等会用到
xdebug.idekey=PHPSTROM #调试器的关键字,貌似没是没用如果不是用dbgp proxy,我这次配置用的不是dbgp proxy.
;xdebug.remote_connect_back=1 #如果配置该项就不需要配xdebug.remote_host但是我们这里不开启这个选项
(xdebug.remote_connect_back 如果该值置为1,Xdebug将自动连接url请求中的IP地址的IDE,连接的端口为remote_port;我们的使用场景不适合,因为主要是APP发起的接口请求,而xdebug需要将debug信息发送至远程的phpstorm IDE; 因此建议将remote_connect_back置为0,此时xdebug的会主动连接remote_host的phpstorm)
记得重启php-fpm,nginx
参考链接:https://www.jianshu.com/p/e9ad4c99d118
参考:Linux+Xdebug+PHP+Nginx 安装&调试_liuser_cn的博客-优快云博客
2.配置phpstrom
设置监听的端口
配置server
,有多个地方可以配置,随便选个地方
配置调试信息
这3个地方都可以找到
选择监听的配置用哪个
===>
开启监听
点下这个.(这个小虫子很重要,不点不行,点了之后随便刷新都可以了)
即可开始打断点,调试,,,()
打开debug,就是那个像甲壳虫的小按钮(此操作会打开一个链接然后将连接后的参数XDEBUG_SESSION_START注入到cookie:XDEBUG_SESSION,该值唯一标示一个ide)
以上都是单人调试的
多人调试
1.在远程服务主机上,安装Komodo Remote Debugging(http://code.activestate.com/komodo/remotedebugging/)
安装python版本的而不是php版本的
下载完后解压即可
tar zxvf Komodo-PythonRemoteDebugging-11.1.0-91033-linux-x86_64.tar.gz
进入目录
运行:
./pydbgpproxy -i 0.0.0.0:9001 -d 9000
()
可能会遇到错误:
解决方案:
解压后执行 pydbgpproxy。
如果提示找不到 dbgp 模块,则编辑该文件。在 96 行左右有这么一块代码:
candidate_paths = [
dirname(this_dir), # Komodo source tree layout
join(dirname(this_dir), pythonlib),
]
把 join(dirname(this_dir), pythonlib)
改为 join(this_dir, pythonlib)
再执行。
就不会报错,顺利的话,会看到如下信息
我们可以看到2个端口都被这个程序占用了
关于这个我个人的理解是,./pydbgpproxy配置的那2个参数监听linux主机上的9001端口和等会要配置的phpstrom上的这里的9001端口对上了.而这边的9000则是原来php.ini配置里面的xdebug端口(接下来会讲)
2.修改php.ini配置文件,记得重启php-fpm和nginx:
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
这里我们放上之前的单人调试参数做对比:
我们可以发现这里的remote_host发生了变化,请注意理解.
3.配置phpstrom
如上图先到configuration里面配置:
配置完后点register :正常的话会看到如下提示信息:
接下来的就和上面一样
.在phpStorm里打开监听,就是一个电话一样的按钮
打开debug,就是那个像甲壳虫的小按钮(此操作会打开一个链接然后将连接后的参数XDEBUG_SESSION_START注入到cookie:XDEBUG_SESSION,该值唯一标示一个ide),将XDEBUG_SESSION_START参数值修改为IDE Key
最后的这边的修改以谷歌浏览器为例子:
中途如果有什么错误,,记得看看phpstrom右上角提示部分
参考:PhpStorm, XDebug, and DBGp Proxy - zbjice - 博客园
补充:上面说的都是web调试,下面说一下cli(命令行模式)调试要注意的地方
首先是配置项要新增xdebug.remote_autostart=1(xdebug.remote_enable=1当然也是要开启的啦),让xdebug自动启动一远端调试会话并尝试连接到一个调试客户端.