xdebug在phpstrom上的应用(废弃,如果有坑,可以参考看看)

本文详细介绍Xdebug在Linux环境下与PHP、Nginx及PHPStorm配合使用的安装配置过程,包括选择适合的Xdebug版本、编译安装步骤、php.ini配置、PHPStorm调试配置及多人调试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装xdebug

百度去下载对应的xdebug然后安装:

Xdebug: Downloads

下载的时候注意一个区别文件,后缀有个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自动启动一远端调试会话并尝试连接到一个调试客户端.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值