开发环境:

本地 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. spark 先groupby 再从每个group里面选top n

    import spark.implicits._ val simpleData = Seq(("James","Sales","NY",90 ...

  2. tracking调研

    常用框架有以下三种:       Separate Detection and Embedding (SDE- 物体检测,特征提取与物体关联),JOINT Detection and Embeddin ...

  3. Identity – Introduction & Scaffold

    主要参考: Introduction to Identity on ASP.NET Core Start by command dotnet new webapp --auth Individual ...

  4. 解密Prompt系列38.多Agent路由策略

    常见的多智能体框架有几类,有智能体相互沟通配合一起完成任务的例如ChatDev,CAMEL等协作模式, 还有就是一个智能体负责一类任务,通过选择最合适的智能体来完成任务的路由模式,当然还有一些多智能体 ...

  5. 基于 Session 实现短信登录

    短信验证 一.基于Session 1.登录流程 1)发送验证码 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号 如果手机号合法,后台此时生成对应的验证码,同时将验证码进 ...

  6. GPUStack正式发布: 为大模型而生的开源GPU集群管理器

    经过 Seal 研发团队几个月来持续的开发和测试,我们满怀期待及热情地发布新的产品 GPUStack,GPUStack 是一个用于运行 LLM(大型语言模型)的开源 GPU 集群管理器.尽管如今大语言 ...

  7. CSS 学习路线图

    一.基础入门阶段 学习内容: 理解 CSS 的作用和基本概念,包括样式表如何与 HTML 结合来美化网页. 掌握 CSS 的语法结构,如选择器.属性和值的组合方式. 学习常见的文本样式属性,如字体大小 ...

  8. 第24天:安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制

    #文件管理模块-上传-过滤机制 1.无过滤机制 2.黑名单过滤机制 3.白名单过滤机制 4.文件类型过滤机制 $_FILES:PHP中一个预定义的超全局变量,用于在上传文件时从客户端接收文件,并将其保 ...

  9. USB-A, Micro, lightning and USB-C

  10. Ewald求和在分子静电势能计算中的应用

    技术背景 分子动力学模拟中,计算周期性边界条件的静电势常被视作计算的瓶颈之一.形式上是比较容易的,例如不考虑周期性边界条件的话,静电势能就是: \[E=\frac{1}{4\pi\epsilon_0} ...