easy connect 获取服务端配置信息失败_PHP调试工具Xdebug相关:安装、配置、调试、分析...

1. 什么是Xdebug

Xdebug是一款用于调试PHP脚本的调试插件,利用自研的DBGP协议进行调试数据传输。 2. Xdebug能干什么 用于PHP代码调试,快速定位问题。 3. 为什么要用Xdebug,有什么其他选项吗 Xdebug可以说是目前PHP生态下做得最好的一款调试器,能和多款IDE便捷的结合使用,并且有开放的DBGP协议可以自定义连接调试。其他的调试办法也有,诸如通过内置的API如echo,printf,var_dump,抛出异常等;也可以利用浏览器进行调试,一种是直接在页面输出结果,另一种是采用FirePHP;再一种就是使用专门的Debugger,如Xdebug,Zend Debugger等,其中Xdebug是目前为止最好用的。 4. 怎么安装Xebug 和常用的安装PHP扩展的方式一致,可以采用源码安装,系统自带命令安装(如apt、yum),pecl方式安装,以及phpize方式安装。 这里采用phpize方式安装,首选需要下载适合的xdebug版本:  https://xdebug.org/download.php ,然后点击source下载 下载好后通过scp命令等上传到服务器,执行 tar -zxvf xdebug.tgz 进入xdebug目录,执行phpize命令:如 /home/xiaoju/php/bin/phpize 然后进行configure,注意填写你实际的php-config地址,如:./configure --with-php-config=/home/xiaoju/php/bin/php-config --enable-xdebug 接着进行 make && make install,确保这个过程没有问题,成功后会输出extension的地址,复制好这个地址 接下来编辑php.ini,增加一行:zend_extension=刚刚你复制的地址/xdebug.so 重启php-fpm,查看phpinfo,就能看到xdebug出现了 5. Xdebug该怎么配置呢

5.1 服务端配置

我们可以接着上一项的位置接着配置php.ini,比较关键的几个参数书:
[Xdebug]zend_extension=/home/user/php7/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so; 启用远程调试xdebug.remote_enable=1; 如果开启此项配置,将忽略 xdebug.remote_host 的参数; 浏览器访问任意 php 页面时,服务器会以当前客户端 IP 作为 remote_hostxdebug.remote_connect_back=0; 绑定远程调试主机地址xdebug.remote_host=localhost; 远程主机监听的端口xdebug.remote_port=9000; 是否自动启动xdebug.remote_autostart=1; 远程追踪xdebug.remote_trace=on; 默认开启xdebug.default_enable=on; 远程传输协议xdebug.remote_handler=dbgp; 远程模式?xdebug.remote_mode=req; IDE中配置的KEYxdebug.idekey=PHPSTORMxdebug.auto_profile=onxdebug.collect_params=onxdebug.collect_return=onxdebug.profiler_enable=onxdebug.trace_output_dir="/home/user/logs/xdebug/"xdebug.profiler_output_dir="/home/user/logs/xdebug/"
如果你是本地调试的话,xdebug.remote_host配置为localhost就行, 需要注意的是,如果你是远程调试的话,这里有两种模式,一种是固定ip模式,一种是根据会话信息自动获取ip。 这两种模式的区别点在于配置xdebug.remote_connect_back 的值,如果为0则为固定ip模式,如果为1则为自动模式,这样就可以忽略配置xdebug.remote_host 那么是如何开启会话的呢? PHP允许动态识别是否启动调试,当我们访问任意的PHP页面是,如果包含了XDEBUG_SESSION_START参数,就会开启Xdebug调试。 5.2 IDE配置——以PHPStorm为例 配置IDE我们需要简单的了解一下DBGP协议,这样明白为何这样配置,DBGP是Debugger Protorl的简写,是Xdebug自定义的一套标准调试器协议,通过在服务端和客户端建立端口连接进行调试信息的传输。具体的协议内容和解释可以参考下方相关资料。 首先我们需要在PHPStorm里找到Language & Frameworks > PHP > Debug 配置里面的Xdebug端口为你设定的端口,比如9000,这里的9000的意思是在本地建立的监听端口,而非服务器端口。然后勾选Xdebug下的其他选项。 640?wx_fmt=png 接着,展开Debug,选中DBGp Proxy选项,配置IDEKEY(php.ini中的xdebug.IDEKEY),Host填写服务器地址,Port填写服务器访问端口。   640?wx_fmt=png 选择Debug下方的Servers,点击添加,新增一个Server,Debugger选择Xdebug,勾选Use path mappings,左边填写本地项目地址,右边选择线上项目地址,这样的目的是便于在进行调试的时候进行文件映射,IDE能方便的打开跳转到相关文件。 640?wx_fmt=png 点击Apply再点击Ok结束在这里的配置。 640?wx_fmt=png 接着最后一步配置,在主界面找到右上方这个位置,在下拉框下拉,点击Edit Configurations   640?wx_fmt=png 点击添加,选择 PHP Web Page,Server选择我们之前配置的,设置好初始调试路径,也可以设置为根目录,之后再修改,保存即可。 6. 安装好了该怎么进行调试呢? 还是在刚刚右上角配置调试信息的地方,可以选择手动调试模式(第一个按钮)和监听模式(第二个按钮,电话样式的),这两个的区别在于如果你配置的是固定ip,然后开启了电话那个监听,就可以不带参数(XDEBUG_SESSION_START)就可以成功换起调试了,但是需要注意的是,这样的话每一个PHP请求都会被分发过来,所以还是采用第一种好一点,按那个小虫子。 640?wx_fmt=png 然后就会先打开浏览器页面,再跳转到这边来了,如下可以看到目前到了哪个断点,哪一行,程序的堆栈信息这些的。 640?wx_fmt=png 如果需要更换调试地址的话,也很简单,如下,跳出当前调试,然后再修改浏览器刚刚那个访问即可(不要去掉XDEBUG_SESSION_START参数) 640?wx_fmt=png

7. 相关资料 PHP调试技术手册: http://blog.xiayf.cn/assets/uploads/files/PHP-Debug-Manual-public.pdf   DBGP协议: https://xdebug.org/docs-dbgp.php https://paper.seebug.org/308/ https://www.restran.net/2017/09/16/php-xdebug-cmd-exec/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值