PhpStorm配置Xdebug远程调试
文章目录
【注意】最后更新于 March 30, 2019,文中内容可能已过时,请谨慎使用。
调试复杂些的项目代码,Xdebug
是一把利器,本文结合自己的开发环境简讲通过PhpStorm
完成Xdebug
调试,部分原理图借鉴xxlegend
作者
环境介绍
本机:Windows10 + PhpStorm 2018 + Ip 192.168.10.108
开发机:CentOS 6.10 + PHP 7.1 + Nginx 1.14 + Ip 192.168.10.140
开发方式
一般情况开发者都是在本地开发,使用的开发环境也是本地自己搭建的,无论是在Win
、Mac
、Linux
三者哪一个平台开发,最终想达到的体验是尽可能和生产环境一致,如果是在Win
下开发,带来的代码兼容性问题时长让人难受(如:大小写问题),以至于追求Unix
开发是一种潮流,这可能便是Mac
之所以时程序员所爱的原因吧,Win
下要想到达此效果。
- 通过在
Window
下安装虚拟机,虚拟机中安装Linxu
系统; - 使用
Windows 10
已经支持开启子系统,Ubuntu
子系统中安装PHP
开发环境; - 使用公司提供的公共开发机,开发机环境和所需服务都是安装好的,通过
samba
共享目录方式,本机无环境,开发机创建一个自己的虚拟目录;
- 方法一:没有配置上
SSD
,内存没到4G
慎用 - 方法二:
Windows 10
开启子系统,在应用市场一键安装Ubuntu
,还是很方便的,在子系统中可以直接访问宿主机(本机)目录,使用感很方便。 - 方法三:我公司为了开发者方便,搭建了
IP
为140
的开发机,通过samba
创建虚拟目录,本地添加网络盘方式打开140
自己Home
开发目录;
目录介绍
|
|
本机通过挂载网络盘方式,访问到开发机/home/dingbing/zhifu
Xdebug 原理介绍
工作方式
客户端(浏览器)发起请求,服务器Apache(或Nginx等),接收请求根据服务端配置规则如果是.php
转交PHP
,如果携带调试信息?XDEBUG_SESSION_START=10003
参数,并且PHP
引擎安装且开启了Xdebug
,Xdebug
把信息转发给IDE
,从而完成断点调试。
通信设置
使用静态IP/单个开发人员
{% asset_img [class names] dbgp-setup.gif [width] [height] [title text [alt text]] %}
- 服务器的IP是10.0.1.2,端口是HTTP
- IDE在IP 10.0.1.42上,因此xdebug。remote_host被设置为10.0.1.42
- IDE监听端口9000,所以是xdebug。remote_port被设置为9000
- HTTP请求在运行IDE的机器上启动
- Xdebug连接到10.0.1.42:9000
- 调试运行,提供HTTP响应
安装并调试
安装 Xdebug
这里平台不一样,安装方式也不一样,Linux
和 Window
平台会稍有不同,PHP 版本不一样,对应安装的Xdebug
版本也不一样,安装方式这里暂时不总结了。
Linux
下编译后,将.so
文件引入到php.ini
Window
下,将对应的xdebug.dll
库文件引入到php.ini
官方下载地址 https://xdebug.org/download.php
安装后我的(CentOS)php.ini
配置清单
|
|
配置项解释:https://xdebug.org/docs/remote
配置 Debug
步骤 File->Setting->Languages & Frameworks->PHP->Debug
注意IDE Xdebug port
端口要和php.ini
配置保持一致。
配置 Servers
步骤 File->Setting->Languages & Frameworks->PHP->Servers
xdebug_set_1
配置 Debug Configuer
步骤 Run->Edit Configurations->Add New Configuration
调试
- 打断点
- 点击右上角小虫子图标,开启调试
- 如果看到如下图,那么恭喜你,已经成功开启了断点调试
补充
Q:开启Debug
后,1分钟后调试自动终止了。
A:是因为PHP
脚本默认超时时间是 1分钟,设置PHP
超时时间为1小时、或2小时,
设置方式:
- Nginx、php-fpm 情况,修改 php-fpm.conf 文件
request_terminate_timeout = 7200
- apache Module 情况,修改 httpd/conf.d/fcgid.conf 文件
FcgidIOTimeout 7200
END :-)
参考地址
文章作者 BING
上次更新 2019-03-30