我的编程笔记记录我的编程笔记记录
首页
文章
分类
速记
相册
归档
RSS
首页
文章
分类
速记
相册
归档
RSS
  • 全部文章
  • 开发 (25)

    • 编程语言 (9)

      • css (1)

        • 【布局】css布局一本通【转载】
      • javascript (2)

        • canvas (2)

          • canvas处理视频
          • canvas 通过图像数据点阵重新绘制图像
      • php (3)

        • 调试 (1)

          • Xdebug的工作原理及在phpstorm下的配置
        • 源码 (1)

          • PHP实现ZIP流式打包下载(Zip on the fly)
        • composer常用指令
      • vuejs (3)

        • 2.x (1)

          • 封装一个三方组件的通用套路
        • vue中使用jsx开发组件
        • vite小技巧
    • 基础 (1)

      • patterns (1)

        • 结构型 (1)

          • 代理
    • 量化 (1)

      • qmt (1)

        • 大QMT关闭文件IO和Socket后,如何从外部获取特色数据和信号?如何得心应手的使用QMT呢?
    • 数据库 (4)

      • mongodb (1)

        • MongoDB快速入门
      • mysql (3)

        • 基础知识 (2)

          • mysql分页的两种方式
          • mysql取随机数字
        • sql性能监控工具
    • linux (1)

      • 常用 (1)

        • wget下载整个网站或者特定目录
    • tools (9)

      • 开发环境 (2)

        • vscode中的代码片段
        • linux下搭建samba用来和windows共享文件
      • 运维 (1)

        • 安装minio做图床
      • ide (2)

        • IDEA必装插件
        • IDEA文件模板变量
      • DOS常用指令
      • nginx 之 proxy_pass详解
      • nginx下websocket反向代理
      • github快速找项目

Xdebug 的工作原理及在 phpstorm 下的配置

Xdebug 使用可以很简单,在不需要考虑过多场景的情况下只需要,简单配置三项就可以开启单步调试之旅啦。

xdebug 工作的原理图

img.png

xdebug 版本和 php 版本的对应关系

php.ini 中的配置 xdebug 3 的版本

zend_extension=debug
[Xdebug]
;开启有这个模式开启则不需要过多的配置即可调试
xdebug.mode = debug
;任意请求都开启
xdebug.start_with_request = true
;IDE中开的端口 本地默认不用配置
xdebug.client_port = 9000
;IDE所在的IP地址 本地默认不用配置
xdebug.client_host=127.0.0.1

php.ini 中的配置 xdebug 2.X 的版本

[Xdebug]
xdebug.remote_enable = On
;任意请求都开启
xdebug.remote_autostart = 1
;IDE中开的端口 本地默认不用配置
xdebug.remote_port = 9000
;IDE所在的IP地址 本地默认不用配置
xdebug.remote_host=127.0.0.1

phpstorm 中的配置

image

image

image

image

远程调试

  1. phpstorm 建一个远程调试配置

image

2.服务器进行如下配置

[xdebug]
xdebug.mode = debug
;只有在 $_GET $_POST $_COOKIES 中携带 XDEBUG_SESSION 参数才开启,参数值为phpstorm中填的idekey,
xdebug.start_with_request = trigger
;IDE中开的端口 本地默认不用配置
xdebug.client_port = 9000
;IDE所在的IP地址 本地默认不用配置
xdebug.client_host=127.0.0.1
xdebug.idekey="coderzhouyu"
xdebug.log = /www/server/php/80/xdebug.log

3.用 ssh 远程对本地隧道打通网络(用其他工具也是一样的只要能实现数据包转发到本地的 BGDP,自己手搓一个也不是不可以)

# -R 意思是远程的端口链接到本地的端口 对应的有-L
# 本地端口9000 映射 到远程 127.0.0.1:9000  通过 root@xxx.xxx.xxx.xxx
# 这样服务器的xdebug访问9000端口时,访问会转发到咱们本地的9000来,也就是上面配置的BGDP端口
ssh -R 9000:127.0.0.1:9000 -p 22000 root@xxx.xxx.xxx.xxx

在 docker 中配置 xdebug

## 安装 Xdebug
RUN curl -fsSL https://xdebug.org/files/xdebug-3.1.6.tgz -o xdebug.tgz \
    && pecl install xdebug.tgz && docker-php-ext-enable xdebug
#
## 配置 Xdebug
RUN echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.client_port = 9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.start_with_request = true" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

添加 PHP_IDE_CONFIG 环境变量

这个环境变量是用来告诉 xdebug 连接的 ide 的哪个服务,这个服务就是 phpstorm 的服务名,这个服务名是在 phpstorm 的配置中设置的,如下图所示:

PHP_IDE_CONFIG="serverName=phpstorm"

添加完成后,重启容器,即可在 phpstorm 中进行远程调试。如果此时没有配置远程调试,那么在 phpstorm 中会提示你配置远程调试。按照提示配置即可。

最后更新: 2026/10/5 16:34
← 上一篇wget下载整个网站或者特定目录下一篇 →sql性能监控工具

相关文章

  • composer常用指令开发 / 编程语言 / php