phpstorm配置Xdebug最完整教程,绝对成功
目录
- 概述
- 配置xdebug扩展
- 设置phpstorm
- php7进阶到架构师相关阅读
概述
这是关于php进阶到架构之核心技术与实践学习的系列课程:phpstorm配置Xdebug最完整教程,绝对成功
学习目标:
成功搭建php 的xdebug开发环境,便于本地调试,提高开发效率
配置xdebug扩展
本文以windows环境为例,其他的linux和mac等环境同理。
本文配置phpstrom支持xdebug断点调试,不需要浏览器安装扩展程序即可php程序断点调试
xdebug官网下载地址:
https://xdebug.org/download.php
第一步:根据自己电脑的php版本下载对应的xdebug版本
【注意:区分ts和nts版本】
TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。
如何确定自己电脑支持的是NTS还是TS?
运行phpinfo(),部分截图如下

我的电脑显示是NTS版本。
xdebug官网下载列表NTS版本与TS版本的区分如下图:

xdebug NTS与TS版本区分
根据自己系统支持选择对应的(php版本+NTS/TS)
第二步:在php.ini配置,让php支持xdebug
[xdebug]
zend_extension="F:\\AppServ\\php5\\ext\\php\_xdebug-2.4.1-5.6-vc11.dll" #指定Xdebug扩展文件的绝对路径
【注意:下面的配置是错误的】
extension = "F:\\AppServ\\php5\\ext\\php\_xdebug-2.4.1-5.6-vc11.dll"
由于php支持模块,一般都是在php.ini文件中配置extension=xxx.dll,我就是犯了这样的错误
extension = "F:\\AppServ\\php5\\ext\\php\_xdebug-2.4.1-5.6-vc11.dll
这样配置,导致xdebug配置始终不成功,花了大半天才发现这个错误,都是血泪的教训呀
xdebug在php.ini中完整配置如下:
xdebug.profiler_enable=on #是否启用Xdebug的性能分析,并创建性能信息文件
xdebug.remote_enable = on #是否开启远程调试
xdebug.remote_handler = dbgp #指定远程调试的处理协议
xdebug.remote_host= 127.0.0.1 #指定远程调试的主机名
xdebug.remote_port = 9001 #指定远程调试的端口号,避免9000端口和php-fpm冲突
xdebug.idekey = PHPSTORM #指定传递给DBGp调试器处理程序的IDE Key
重启服务器,运行phpinfo(),看是否支持xdebug

出现这个表明php支持xdebug
设置phpstorm
第一步:打开phpstorm的设置

第二步:在设置中搜索xdebug,设置端口号9001
注意这个需要和php.ini中xdebug.remote_port 配置保持一致)

点击apply按钮,保存设置
第三步:设置GBDP

其中的IDE_key需要和php.ini中xdebug.idekey配置保持一致,
设置主机,可以自定义,如localhost,这是个名称,需要在下一步具体设置点击apply按钮,保存设置
第四步:设置主机Host

第五步:选择主机Host
(1)点击下图所指的位置

(2)选择主机

第6步:在你运行项目的入口文件添加以下代码
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
setcookie('XDEBUG_SESSION', 1, time() + 86400);
}
这样就保证浏览器不需要添加debug扩展
第七步:开启调试模式

最后一步:在需要调试的php代码处打断点,进行调试
【需要注意:】
第一次不会触发断点调试,原因是下面代码第一次运行,不存在XDEBUG_SESSION的cookie值。
再次运行,就会触发断点调试
setcookie('XDEBUG_SESSION', 1, time() + 86400);

出现这个,恭喜你配置成功!可以愉快地开发玩耍最好的语言php了!