给phpstorm配置xdebug

大致原理

参考:
Xdebug断点调试的工作原理详解
phpstorm+xdebug作用解释及原理分析

简单说就是调试有两种模式,一种是自动开启的随时等待调试
一种是需要调试时给服务器一个开始调试的信息,通过点击bug图标来打开标记了信息的浏览器窗口,链接会默认带一个参数,参数会转换成cookie,提醒php服务器准备好调试。
两种模式可以共存。
不管是自动开始,还是通过参数开始调试,php服务器的xdebug插件都会与127.0.0.1:9000通信,这个端口是phpstorm监听的,所以phpstorm会通知php服务器断点的位置,到达断点时phpstorm会停下来等待调试。

统共分几步

  1. 给php安装xdebug插件
  2. 配置phpstorm

安装xdebug

下载页面:Xdebug: Downloads

由于我比较懒用的是phpstudy,所以只给出大概过程

一、按照php版本和vc库版本,和系统体系结构(32bit/64bit),和是否线程安全选择对应xdebug版本
二、下载扩展dll放进对应php扩展文件夹,我这里的路径为C:\phpStudy\php\php-5.3.29-nts\ext\php_xdebug.dll,linux系统类似
三、打开php配置文件追加xdebug的配置项,类似如下,其中xdebug.remote_autostart = 1就是自动开启的开关

[XDebug]
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir ="C:\phpStudy\tmp\xdebug"
;xdebug.trace_output_dir ="C:\phpStudy\tmp\xdebug"
;xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_autostart = 1
xdebug.remote_host = "127.0.0.1"
zend_extension="C:\phpStudy\php\php-5.3.29-nts\ext\php_xdebug.dll"

20170623更新:不建议记录log,因为一不小心就有几个gb了,我刚刚清空了tmp目录,建议有需要的时候开启。

四、重启后查看<?php phpinfo();?>确认已经安装xdebug

配置phpstorm

一、配置debug

菜单栏:文件->设置->打开设置对话框
设置:语言和框架->php->Debug

在Xdebug标签中,确认Debug端口为9000,9000为Debug的默认端口,如果被其他程序占用,那么需要在php.ini中添加配置
xdebug.remote_port=9000,并修改端口为其他比较大的端口比如xdebug.remote_port=9191
QQ截图20170619102847.jpg

二、配置“运行/调试配置”
菜单栏:运行->编辑结构
点击左上角的+号,选择PHP Web Application,设置服务器的名称,点击Server右边的...,添加一个服务器,可以选择hosts映射的域名,再选择开始调试地址和默认浏览器。
配置完成后在phpstorm中点击bug图标就可以打开已配置的带有调试标识的server,只需要在phpstorm中点击某一行下断点,再运行到你下断点的程序段,phpstorm就可以在指定位置停下等待调试。

QQ截图20170619103013.jpg

实际使用情况

QQ截图20170619114341.jpg

打开带cookie的浏览器页的按钮是第二个bug图标按钮,自动开启的debug是第四个电话标志。

我的所有程序都在WWW目录下,有一部分程序使用了hosts映射的域名,当使用本地映射的域名的时候,自动开启的debug不可用,但是使用localhost打开的同样的程序段,使用电话标志可以拦截debug。

当使用映射域名的时候,只能使用bug图标来打开浏览器页面开启调试,根据你不同情况,来选择适合你的调试方法。

也许是我使用的方法不对,但是修改了各种设置始终不能让本地映射域名的地址支持自动开启的debug,但是还好使用手动的方式并不复杂。

附录ftp设置方法

菜单栏:工具->Deployment->Configuration

QQ截图20170619120816.jpg

配置完ftp服务器的账号密码,还需要切换到Mappings标签再配置相对目录
需要保证两个目录中目录结构一致并且与当前打开的项目的根目录一致
如下
QQ截图20170627133307.jpg

添加一个ftp服务器之后,只需要在文件标签上右键就可以将文件上传到对应测试服务器进行测试了。

QQ截图20170619120926.jpg

最后修改:2017 年 07 月 08 日 05 : 48 PM