前言
如需了解Vagrant下CentOS的box安装Xdebug并开启phpstorm监听浏览器或postman或eolinker远程调试全过程,请点我
由于配置过程涉及IP、域名、项目目录,因此统一在这里先约定了,以便对照
服务器IP:192.168.1.8(假设这是公网IP)
客户机IP:192.168.1.16(也就是开发机)
项目名称:kol_server
项目所在客户机目录:E:\wwwroot\kol_server
项目所在服务器目录:/home/wwwroot/kol_server
vagrant目录映射:E:\wwwroot=》/home/wwwroot/
项目域名:admin.kol.test.com
项目php版本:7.3
准备工作
登录先登录服务器,切换用户到root用户
安装xdebug
选择需要下载的xdebug扩展源码包:https://xdebug.org/download
这里我们假设一个场景:
环境用的是lnmp.org所提供的lnmp1.6版一键安装包,PHP版本用的是php-7.3.11
下载的扩展源码包我打算放在/home下,我打算安装的xdebug扩展版本是Xdebug 2.9.5,那下载后源码包的路径是:
/home/xdebug-2.9.5.tgz
考虑到操作的便捷性此处用一句话命令囊括安装的命令:
cd /home && wget https://xdebug.org/files/xdebug-2.9.5.tgz && tar zxvf xdebug-2.9.5.tgz && cd xdebug-2.9.5 && phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
至此扩展已经安装完成
现在开启刚安装的扩展
编辑php.ini文件
vi /usr/local/php/etc/php.ini
在末尾加上
特别注意不是extension=xdebug.so是zend_extension=xdebug.so,否则会报Xdebug MUST be loaded as a Zend extension
zend_extension=xdebug.so
重启php,如果你用的也是lnmp,那就执行
lnmp restart
最后验证扩展是否成功安装并生效,执行以下命令:
php -m
看到如下截图表示已经成功:
修改Xdebug配置
默认配置可参考官方配置项,编辑php.ini文件
vi /usr/local/php/etc/php.ini
在末尾加上你需要的配置,不加则使用默认,如需要修改远程端口,则在文档的末尾添加一行:
xdebug.idekey = "vagrant"
xdebug.default_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler="dbgp"
重启php,如果你用的也是lnmp,那就执行
lnmp restart
配置防火墙,开启9001端口
iptables -A INPUT -p tcp -m tcp --dport 9001 -j ACCEPT && service iptables save && service iptables restart
如果IDC服务商存在额外的防火墙,如阿里云需要在IDC服务商的防火墙控制面板开启9001端口的TCP访问,授权访问的IP填写你当前网络环境下的公网IP
配置phpstorm
添加ssh配置
添加部署
设置目录映射
配置远程php CLI解释器,php language level选择php版本7.3,然后如下图点击…按钮
根据下图点击
选择ssh配置,php7.3解释器所在路径,正常情况下如果没有做多php版本的服务器,只要根据下图选择即可然后点击ok:
选择debugger extension,也就是xdebug.so路径
类似这样的地址:/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
点击ok后可以看到下图,记录点击ok
其中绿框部分显示的是目录映射信息,无需修改,此处显示可能每个人有所不同,phpstorm会根据deployment中的设置自动生成,切记一般是不需要修改的,其他信息也都不需要修改点击ok保存即可!
设置xdebug远程访问端口
配置DBGp Proxy
Host是服务器IP
添加网站服务器
Name是Server名称,可以随便填写;
Host为你调试项目是访问的IP或者域名.
假设你的访问路径为“http://192.168.1.102/project/…”,那这里配置成192.168.1.102。
假设你的访问路径为“http://www.abc.com/index.php”,那这里配置成www.abc.com;
Port为你Web服务器的端口,一般为80。
除此之外还需要配置项目路径的映射(path mapping),将项目的根目录以及public目录映射到Vagrant服务器中的绝对路径。
设置Run/Debug Configurations
上图所示的server选择之前添加的kol_server,选择你调试用的浏览器,默认chrome,其他信息无需修改,点击ok保存即可
下载Xdebug helper浏览器扩展
debug调试
开启debug监听
设置断点
假设kol_server项目是通过thinkphp开发的,最简单的测试方式在入口文件index.php中设置断点如下图:
使用浏览器调试
假设之前设置的调试浏览器是chrome,那么通过chrome访问kol_server项目域名admin.kol.test.com,默认情况下插件开启的是debug模式,如需切换可以点击浏览器如下图所示图标,进行切换。
正常模式下一旦访问phpstorm即可响应来自xdebug的入站响应
使用eolinker或者postman调试
需要在header请求头部添加Cookie
XDEBUG_SESSION=vagrant
如下图:
请注意,关于debugger配置验证显示无法通过,请忽略,无法通过原因可以参考如下解释:
因为目前大多数项目部署入口都是在类似public的目录下,如Thinkphp项目和Laravel项目,当配置映射时需要映射到整个项目目录,而debugger配置验证走的是整个项目的根目录,正常情况下该目录是没有直接URL访问权限的,所以是不可能通过的。当然如果是一些个别老项目,入口就在根目录下,那完全可以通过debugger配置验证。
整理记录不易,如果对您有用,请不要吝啬点赞!!
如需了解Vagrant下CentOS的box安装Xdebug并开启phpstorm监听浏览器或postman或eolinker远程调试全过程,请点我