开发环境:

本地 Windows10 日常开发使用的环境 装有PHPStorm 

远程主机 Linux  服务器 装php-fpm/nginx等所有开发依赖环境

本地可以访问远程主机 但远程主机无法访问本地 

目的

远程调试(remote debug)在windows本地环境下 调试远程服务器(Linux)上的代码

问题

之前一直认为 php-xdebug 的扩展的remote_debug 只能够支持本地环境下调试

其实原因是没有准备好调试环境  (远程的服务器上无法访问到本地的调试端口 需要通过ssh隧道端口映射 建立连接)

其client 和 server 的对应关系如下图

本地的PHPSTORM 在开启断点服务后 会打开一个的调试服务 (默认端口为 9000)

用于与服务器进通过DBGP行通信

但本地环境是处于局域网内 服务器无法通过IP 直接访问IDE的调试端口

步骤

1. 远程主机上安装 php_xdebug 扩展

  1) 下载xdebug扩展包  https://xdebug.org/docs/install

  2)之前安装依赖

yum install php-devel autoconf automake

  3)解压

tar -xvzf xdebug-2.9.0.tgz

  4)执行编译安装

cd xdebug-2.9.0

phpize

./configure

make && make install

2. 修改配置文件php.ini 并重启php-fpm

[xdebug]

zend_extension=/webser/soft/php72/lib/php/extensions/xdebug.so

xdebug.remote_enable=1

xdebug.remote_port=9001

xdebug.remote_host=127.0.0.1

xdebug.remote_log=/var/log/php-xdebug.log

xdebug.idekey="PHPSTORM"

然后查看phpinfo信息 检查配置是否生效

3. 本地与远程主机建立ssh隧道>端口转移 使远程主机能够访问到IDE的9001端口

远程主机上键入telnet命令# telnet 127.0.0.1 9001 检查是否能够访问9001 端口

(这里因为端口冲突 默认9000 改为9001 php.ini 与 PHPSTORM配置 保持一致)

4. PHPSTORM debug配置

添加Server 并配置IDE KEY (需与php.ini 中保持一致)

最后点击绿色的甲虫和电话筒 打开调试 并打上断点

Run (运行) > Break at first line in PHP scripts 设置php断点在脚本第一行

5. 安装xdebug_helper 或者 在请求中携带 IDEKey 即可触发调试

扩展: 当我们在需要再命令行模式中启用xdebug 时 可以通过以下方式 配置session_key

## When running the script from the command line
## you need to set an environment variable, like:
Linux 环境中:
export XDEBUG_CONFIG="idekey=session_name"
php myscript.php Windows 环境中:
set XDEBUG_CONFIG="idekey=session_name"

面板使用:

左侧

绿色三角形 : Resume Program,表示將继续执行,直到下一个中断点停止。

红色方形 : Stop,表示中断当前程序调试。

上方

第一个图形示 : Step Over,跳过当前函数。

第二个图形示 : Step Into,进入当前函数內部的程序(相当于观察程序一步一步执行)。

第三个图形示 : Force Step Into,強制进入当前函数內部的程序。

第四个图形示 : Step Out,跳出当前函数內部的程式。

第五个图形示 : Run to Cursor,定位到当前光标。

参考:

  https://juejin.im/post/6844903728193994766

  https://learnku.com/articles/39479

Xdebug+Phpstorm远程调试的更多相关文章

  1. 使用phpstorm和xdebug实现远程调试

    使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想 ...

  2. PHP - 如何使用XDEBUG来远程调试?

    开发的时候我都是使用XDebug在本地调试,但是最近加入一些项目中去,环境太复杂了,要在本地搭建一个开发环境真的太麻烦了,那么我们怎么使用xdebug来远程调试呢? 我这里使用虚拟机搭建了一个模拟环境 ...

  3. PHP使用Xdebug进行远程调试

    PHP使用Xdebug进行远程调试 翻译 by mylxsw posted on 2014/07/14 under 技术文章 > 编程语言 Xdebug提供了客户端与PHP脚本进行交互的接口,这 ...

  4. XDEBUG+PHPSTORM 开发 调试

    原文:XDEBUG+PHPSTORM 开发 调试 XDEBUG+PHPSTORM 开发 调试 在我们开发过程中.我们如果经常性的echo.dump效率很低.所以我们就可以使用xdebug进行断点调试. ...

  5. PHPStorm+Xdebug断点远程调试PHP xdebug安装

    一.xdebug安装 wget http://www.xdebug.org/files/xdebug-2.2.3.tgz #下载Xdebug tar xzf xdebug-2.2.3.tgz cd x ...

  6. PHP+Xdebug实现远程调试

    以前以为php调试时服务器端和IDE必须在同一台机子上,无意发现xdebug其实是支持远程调试的. 尝试之后发现可以配置成功,还是可以调试代码的感觉爽啊!   php所在Ubuntu服务器       ...

  7. 使用xdebug+eclipse远程调试centOS7上的PHP代码

    这两天一直在研究PHP代码的调试,原来开发一直用的var_dump,麻烦! 最近发现能使用xdebug+eclipse远程单步调试PHP,但是百度后实现此技术的文章都写得不够具体. 我照着这里零散的文 ...

  8. [视频教程] 配置vscode的PHP自动补全提示与使用Xdebug进行远程调试debug

    默认下载安装完的vscode并不能准确提示和检测PHP的语法错误,需要手动指定一下本机的PHP程序路径.按下面的操作配置完后就能在文件保存的时候检测语法有无错误.打开文件->首选项->se ...

  9. php+xdebug+dbgp远程调试(多人)

    目录 创建 DBGP 服务 配置 调试 创建 DBGP 服务 到 下载页面,下载 python 版本的 dbgp 到服务器上. 解压后执行 pydbgpproxy. 如果提示找不到 dbgp 模块,则 ...

  10. PhpStorm集成xdebug进行断点调试

    本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧. 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6. 1. 下载xdebug的扩 ...

随机推荐

  1. Heart Rate Variability - HRV

    一次心跳波形 心率变异性 通常希望HRV 越高越好 HRV 公式: 需要指出的是,心率变异性会有多种计算公式. HRV数值相对越小=当天压力越大/身体越疲劳:HRV数值相对越大=当天压力越小/身体状态 ...

  2. C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  3. LeetCode题集-3 - 无重复字符的最长子串

    题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度. 我们先来好好理解题目,示例1中怎么得到长度为3的? 如果以第一个字符a为起始,不含重复的最长子串是abc:则我们这样表示(a) ...

  4. SQL Server 冗余维护

    介绍 冗余是维护的魔鬼, 是性能优化的天使 常见的冗余有 1. computed column 2. principal 的识别字段 3. cross computed 4. cascade soft ...

  5. OpenSSL证书通过Subject Alternative Name扩展字段扩展证书支持的域名

    1.概述 1.1 什么是Subject Alternative Name(证书主体别名) SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展.它允 ...

  6. Navicat Premium 12的下载和安装

    首先下载navicate程序以及破解文件,这里一并存到了百度网盘直接下载即可 链接:https://pan.baidu.com/s/1a2QKHHUZ0ej1D78CjQ1ldA提取码:klus 解压 ...

  7. Servlet——idea创建Servlet模板

    idea创建Servlet模板   以前新建一个Servlet是通过新建一个Class文件   可以直接新建一个idea内的Servlet模板                    可以通过设置 更改 ...

  8. fp16 的累加误差有多大

    本文地址:https://wanger-sjtu.github.io/fp16-err/ 最近在项目中需要实现fp16的数据类型做FFN的计算,算子实现的同学反馈误差与x86上得到的golden数据有 ...

  9. k8s StorageClass 存储类

    目录 一.概述 1.StorageClass 对象定义 2.StorageClass YAML 示例 二.StorageClass 字段 1.provisioner(存储制备器) 1.1.内置制备器 ...

  10. Docker修改IP地址方法

    一.查看Docker IP root@master:/# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu ...