`
xieye
  • 浏览: 806045 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用xdebug进行远程调试

    博客分类:
  • PHP
阅读更多
使用xdebug进行远程调试。

这是我的原创文章,转载请注明出处

xdebug原理就不说了,网上很多,分本地调试,远程调试。
本地调试很简单,phpstorm号称零配置,也很简单。因为太简单,本文不讨论本地调试

xdebug远程调试比较复杂。

花了好几天时间踩坑,终于搞清楚调试方法。
本文档既适用于docker,也适用于普通的远程主机。因为docker最麻烦。

现实的情况是,我在本机的docker-toolbox里部署的php,nginx,宿主机是win7,开发工具phpstorm。

首先,给php安装好xdebug。配置大概如下:
zend_extension=xdebug.so
xdebug.remote_enable = On
xdebug.remote_handler = dbgp   
xdebug.remote_host = 10.0.0.2
xdebug.remote_port = 9002
xdebug.idekey = PHPSTORM


dbgp是固定写法。
10.0.0.2是容器访问宿主机的ip,在win7 的cmd,用ipconfig可以看到当前机器的ip。
但最佳方法是写phpinfo(),然后观察宿主机在docker里的ip地址。
9002是 phpstorm这个应用程序的监听端口。
还有,xdebug比较特别,不能使用extension = 。。。 ,而必须使用zend_extension= ...

给nginx配置server_name
这是血泪教训,好几天就因为这个没有配,还是大量google得知的。
server {
    listen 80;
    root /var/www/taoke;
    server_name www.t1.com;
    index index.php ;
    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }
	location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    } 
}


重点就那一句话 server_name ...

docker共享目录设置
目录总共有三种,
win7下的程序目录。
docker容器外的目录。
docker容器内目录。
比如的我项目:
win7下:
D:\lenovo_d\docker_study\my_dockerfile\wwwroot\taoke

然后我在虚拟机做了共享目录
在docker环境的根目录下有docker_study目录,映射 了win7的同名目录,
于是为
/docker_study/my_dockerfile/wwwroot/taoke

然后,容器内,又做了映射,容器内只能和容器外互相映射。
/var/www/taoke
也就是nginx的配置文件。

但是做debug,只能有两种目录,我想了个办法。
把容器外的目录添加符号链接,搞定。
在容器外,即docker环境。
ln -s /docker_study/my_dockerfile/wwwroot /var/www

现在,只要说到docker的目录,只有一个,即/var/www/taoke,无论容器内外。


win7设置hosts
C:\Windows\System32\drivers\etc\hosts
添加:
127.0.0.1 www.t1.com

win7浏览器添加附加组件:
如果用火狐,叫做Xdebug helper
如果用chrome,也叫这个名字。
安装好之后,需要右击这个图标,选择“选项”,然后设置IDE KEY为PHPSTORM
以后,想调试时,就设置此图标为绿色 ,即debug状态,
不想调试时,设置此图标为灰色,即disable状态。

phpstorm各种配置 - Debug
file- settings - languages & frameworks - PHP - Debug
设置端口为9002,注意必须和php.ini里的xdebug 的那个xdebug.remote_port 保持一致。
端口周围的三个勾一起打上。

至于Zend Debugger选项不去管它。
还有,改变此端口,需要重启phpstorm。

Debug选项在settings中有3个子项,都可以不管。

phpstorm各种配置 - Deployment 即部署
file- settings - Build,Execution,Deployment - Deployment

点击加号添加一个远程目录映射。
1、Connection
打勾仅对于此项目可见。
type:sftp
host:192.168.99.100
port:22
username:docker
认证方式:password
password:tcuser
勾选保存密码
root path:/var/www/taoke
web server url: http://192.168.99.100
下面的高级选项忽略。

2、Mappings
localpath:D:\lenovo_d\docker_study\my_dockerfile\wwwroot\taoke
deployment path: /
web path:/

3、Explude Paths
自己看情况,可以不设置

正常情况下,设置完之后,会自动列出该目录下的文件。
打开此视窗,在菜单view - tool windows - Remote host

phpstorm各种配置 - servers
file- settings - languages & frameworks - PHP - Servers
添加一个,点击加号。
Name,随意,我填t1,打勾shared。
Host:超级重要,
我填www.t1.com
这既是浏览器访问的网址的主机,又是 nginx里配置的 server_name,然后填写到这里,三方统一。

port:80
选xdebug
勾选use path mappings
左边是:D:\lenovo_d\docker_study\my_dockerfile\wwwroot\taoke
右边是 /var/www/taoke
点击确定。

给程序添加断点
菜单view - toolbar,确保勾上。
确保打电话的绿色小图标没有被禁止,自己点点看电话小图标就知道有两种状态了,启用,禁用。

例如:我的根目录下有一个p123.php
我在phpstorm里打开这个文件,在任意行加断点,关闭这个文件。
此时,打开浏览器,确保附加组件xdebug helper的图标点亮。
输入, www.t1.com/p123.php,发现浏览器页面没有立即返回,似乎在等待什么。
此时,进入phpstorm,发现p123.php这个文件被自动打开,且我的断点行,自动高亮,且下面出现调试窗口,列出了当前php环境的所有变量的值,此时,可以点击几个debug按钮,让程序步进。

完全搞定了!!
条件:phpstorm的程序有断点设置,phpstorm有监听xdebug的请求,小电话图标点亮。
浏览器有使用插件,且设置为debug状态。

如果不想调试,最简单的办法是点击浏览器插件小图标,设置为disable状态,就可以了。极其方便!

最后补充一点,生产服务器不可以安装xdebug,否则导致量资源消耗,且不安全。

0
0
分享到:
评论

相关推荐

    使用phpstorm和xdebug实现远程调试的方法

    vs的断点调试功能很强大有木有,能查看所有变量有木有。...2.需要的东东:一款支持xdebug远程调试的ide,这里使用phpstorm,是一个灰常强大的phpide。另外需要一款你的php对应版本的xdebug。 3.步骤:

    配置xdebug远程断点调试php

    配置xdebug远程断点调试php

    php7.X+PhpStorm2019.X+宝塔linux xdebug远程调试环境的安装及设置

    关于xdebug的安装及设置网上教程很多,通过实践发现网上的很多信息有误,特记录一个相对简单清晰的说明,希望能帮助到有需要的人。

    PHP远程调试之XDEBUG

    开发的时候我都是使用XDebug在本地调试,但是最近加入一些项目中去,环境太复杂了,要在本地搭建一个开发环境真的太麻烦了,那么我们怎么...下面通过本篇文章给大家介绍php xdebug远程调试方法,感兴趣的朋友一起看看吧

    xdebug远程调试配置-证实好用-附带xdebug.so

    xdebug远程调试开启配置,按文档显示加入php.ini配置文件即可。需要自己下载xdebug for windows/linux, linux还需要自己编译出.so, 这里附带两个版本的so(xdebug2.2.5/2.2.6)

    php7.4+phpstorm2022+宝塔linux xdebug远程调试教程

    老弟最新调试成功的,php7.4+phpstorm2022+xdebug远程调试教程。 网络太多这种教程了,基本都过时了,有的...按照下来,基本不通过,调试不了,经过老弟一条的摸索,各种百度,总结出了一份可行的xdebug远程调试方案。

    解析phpstorm + xdebug 远程断点调试

    本篇文章是对phpstorm + xdebug 远程断点调试进行了详细的分析介绍,需要的朋友参考下

    【PHP】调试工具Xdebug的安装与远程调试

    详细介绍使用 PHPStorm 编辑器结合 Xdebug 远程调试 PHP 项目的详细过程。? 本地系统:Windows 10? 远程系统:CentOS 7? 开发环境:XAMPP (PHP7)? IDE : PHPStorm

    PHPStorm+XDebug进行调试图文教程

    主要为大家详细介绍了PHPStorm+XDebug进行调试图文教程,内容很丰富,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    远程调试方法参数配置

    远程调试方法参数配置 在Java远程调试时添加以下运行参数,可进行调试(我使用的是Tomcat服务器) -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=6332,server=y,suspend=n 其中:...

    一文掌握PHP Xdebug 本地与远程调试(小结)

    主要介绍了一文掌握PHP Xdebug 本地与远程调试(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    bughole:Xdebug客户端可以突破生产前的内部网络以实现远程调试

    后端代理既可以通过HTTP请求与前端UI进行通信,也可以与位于后端代理存在于同一主机上的调试引擎(在这种情况下为Xdebug)进行通信。 这样后端代理可以与调试引擎进行通信,以首先获取调试数据,然后通过HTTP将其...

    SublimeTextXdebug:Xdebug调试器客户端,用于Sublime Text 2和3

    概述特征通过配置路径映射进行远程调试在本地驱动器上找到断点时,将其导航到特定行上的相关文件可定制的调试布局,用于显示带有语法的堆栈历史记录和上下文变量所有文件中的断点概述,单击即可禁用/启用断点通过...

    Linux 中Tomcat远程调试代码的实现方法

    Linux 中的tomcat远程调试代码 1,是要编辑catalina.sh文件。  而且要改成这 样: CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp :transport=dt_socket,server=y,suspend=n,address=...

    PHP开发工具ZendStudio下Xdebug工具使用说明详解

    从学习PHP基础知识到使用ZendSudio工具开发有半年多了,这过程中,学习断断续续,遇到的问题也是N多,学习PHP还真是不让人省心。最不省心的还是算调试过程。...这就出现了远程调试的问题。不过Xdebug人家

    PDT(php开发环境) v3.2.0 最新正式版

    PDT是开源的php集成开发环境(IDE)。PDT可为eclipse平台提供一个 php开发工具框架。...它已迅速成长为最高下载的Eclipse项目之一。... ... 基本的javascript编辑语法高亮显示和着色 ...XDebug和Zend调试器支持本地和远程调试

Global site tag (gtag.js) - Google Analytics