`
xieye
  • 浏览: 830937 次
  • 性别: 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
分享到:
评论

相关推荐

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

    在本篇文章中,我们将详细讲解如何在 PHP 7.X 环境下,使用宝塔 Linux 和 PhpStorm 2019.X,安装和设置 xdebug 远程调试环境。 一、环境说明 在本篇文章中,我们将使用两台主机,一台是服务器端,装有 Centos 操作...

    配置xdebug远程断点调试php

    配置xdebug远程断点调试php

    PHP远程调试之XDEBUG

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

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

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

    NC eclipse 远程调试

    NC Eclipse 远程调试是指在 Eclipse 集成开发环境中,使用 Java Debug Wire Protocol (JDWP) 实现远程调试 Java 应用程序的功能。JDWP 是一个基于 socket 的通信协议,用于在 debug 客户端和服务器之间传输调试信息...

    xdebug helper调试插件

    6. **远程调试**:支持与本地或远程服务器上的 PHP 解析器进行通信,实现跨设备调试。 **如何使用 Xdebug Helper** 1. **安装插件**:首先,需要确保浏览器已开启开发者模式,然后将 `.crx` 文件拖入浏览器扩展...

    Myeclipse远程调试方法及配置

    MyEclipse作为一款强大的Java集成开发环境,提供了远程调试功能,使得开发者能够远程连接到运行在其他机器上的应用,进行实时的代码调试。下面我们将详细讲解MyEclipse远程调试的配置方法及其相关知识点。 1. **...

    NC开发环境远程调试端口配置.docx

    NC开发环境远程调试端口配置是指在NC开发环境中配置远程调试端口,以便在开发过程中进行调试和故障排除。下面是相关的知识点: 一、运行环境配置 * 在NC开发环境中,需要在./ncSysconfig文件中修改JVM参数,以便...

    chrome浏览器调试php使用xdebug

    这通常意味着你需要在你的服务器或本地开发环境中安装Xdebug扩展,并在php.ini配置文件中进行相应的设置,比如启用Xdebug,设置远程调试选项(如`xdebug.remote_enable=1`)以及配置监听端口(例如`xdebug.remote_...

    phpstorm远程调试基于swoole的hyperf框架.docx

    标题提及的文档主要介绍了如何使用PHPStorm进行远程调试基于Swoole扩展的Hyperf框架,同时提到了Swoft和Easyswoole等其他框架的远程调试方法。在这个过程中,文档强调了需要Linux环境,并提供了利用VirtualBox安装...

    使用Eclipse远程调试Linux服务器Tomcat项目

    "使用Eclipse远程调试Linux服务器Tomcat项目" 一、概述 在开发Java Web应用程序时,需要在远程服务器上进行调试,以便更好地了解程序的执行过程。使用Eclipse远程调试Linux服务器Tomcat项目可以帮助开发者更好地...

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

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

    利用eclipse进行远程调试

    - 只能在测试环境中进行远程调试设置,生产环境应避免使用远程调试。 - 同一时间只能有一个远程调试会话。 #### 七、总结 通过上述步骤,我们不仅了解了如何配置Resin服务器以支持远程调试,还掌握了如何在Eclipse...

    Tomcat远程调试

    然而,在开发过程中,我们常常会遇到需要进行远程调试的情况,以便解决复杂的代码问题。这篇内容将详细介绍如何进行Tomcat的远程调试。 首先,了解远程调试的基础原理是必要的。远程调试允许开发者在不直接访问...

    idea的远程调试和一键部署

    下面是使用 Idea 进行远程调试和一键部署的详细教程。 一、Spring Boot 远程调试 在使用 Spring Boot 进行远程调试时,默认使用 Java 命令来启动。例如,示例项目启动命令为:java -jar xxx.jar。然后,在服务器端...

    Eclipse远程调试教程

    Eclipse 远程调试是指在 Eclipse 中对 Java 应用程序进行远程调试,通过配置 Tomcat 和 Eclipse,可以实现对远程服务器上的 Java 应用程序的调试。下面将详细介绍 Eclipse 远程调试的配置和使用方法。 一、配置 ...

    PHPSTORM XMAPP XDEBUG 整合PHP 调试开发

    2. 设置XDEBUG远程主机为localhost 3. 设置XDEBUG的追踪信息输出目录 4. 开启远程调试功能 5. 设置远程调试端口为9001 6. 设置IDE Key为"PHPSTORM" 7. 开启Profiler功能 8. 设置Profiler的输出目录 9. 指定需要收集...

    windchill远程调试详细介绍

    Windchill 远程调试是指在 Windchill 开发环境中,使用 Java 平台调试器(JPDA)来调试远程服务器上的 Java 应用程序。JPDA(Java Platform Debugger Architecture)是 Java 平台上的调试器定义的标准体系结构,它...

    idea远程调试代码(图文详细)

    本文将详细介绍如何使用IntelliJ IDEA(以下简称IDEA)进行远程调试。 #### 二、服务端配置 为了能够让远程服务器支持远程调试功能,我们需要在项目启动时添加特定的JVM参数。这里根据不同版本的JDK提供了相应的...

Global site tag (gtag.js) - Google Analytics