Fork me on GitHub

phpstorm的Debug调试

一直以来,调试PHP脚本都是直接在脚本中die或exit实现断点调试,下面介绍phpstorm+xdebug的组合来实现代码的调试

安装&配置xdebug

安装xdebug

sudo apt-get install php5.6-xdebug #ubuntu
sudo port install php56-xdebug  #mac
sudo yum install php56w-pecl-xdebug #centos

配置php.ini

在php.ini文件中添加如下配置

[xdebug]
;zend_extension="/opt/local/lib/php56/extensions/no-debug-non-zts-20131226/xdebug.so" #mac下extension路径
xdebug.idekey=phpstorm
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=8888
xdebug.remote_handler=dbgp
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"

重启apache之后,通过phpinfo查看,截图如下:

xdebug-phpinfo

注意:
1.利用命令“php –ini”可以查看所有.ini为后缀的配置文件,如php.ini、xdebug.ini等,查看xdebug.ini文件即可看到zend_extension配置
2.部分参数说明:,
idekey:自己定义,需要与IDE里头配置一样。
remote_enable:远程调试是否开启。
remote_host:调试器所在的主机,支持本机调试,也支持远程主机调试(例如远程运行php服务将调试信息发到本地IDE)
remote_port:调试器启动的端口。
remote_hanler:运行服务器与调试器的交互协议,默认为DBGP即可。
profiler_enable: 开启信息存储
profiler_output_dir: 信息存储位置

配置phpstorm

打开PhpStorm的Setting(Mac下是Preference)

调试端口

在Debug Port里配置一个端口号,可自定义,需保证未被其他进程占用,前一步的xdebug.remote_port应该与这里开启的端口保持一致,否则xdebug与调试器无法通信
xdebug-port

DBGp Proxy

配置IDE key,与前面的xdebug.idekey保持一致。(Host和Port填写与xdebug.remote_host和xdebug.remote_port保持一致[貌似不一致也是可行的,一般是localhost和80])
xdebug-idekey

进入调试模式

断点调试分3种模式:脚本调试、web application运行调试、浏览器访问自动触发调试。

脚本调试

该模式下允许本地脚本运行时断点调试,步骤如下:
1.设置断点
2.右键选中脚本
3.选择Debug即可
xdebug-script

web application运行调试

该模式允许指定url访问web页面进行php代码调试,步骤如下:
1.设置断点
2.配置web application
3.开启Debug
xdebug-web

其中配置web application的详细步骤如下:

1.选择“Edit Configuration”:
xdebug-config-add
2.添加“PHP Web Application”:
xdebug-config-modify
3.配置详细过程:
xdebug-config-server
4.配置成功后的效果图:
xdebug-config-complete

浏览器调试

该模式下,浏览器需要安装调试的插件,之后浏览器访问某个页面url,自动触发IDE进入调试模式,步骤如下:

1.安装浏览器debug插件,并且需开启debug模式

chrome安装插件Xdebug helper
chrome-debug

firefox安装的插件The easiest Xdebug
firefox-debug

注意:插件内的IDE key配置必须与xdebug.idekey保持一致

2.PhpStorm开启监听连接
phpstorm-listen

3.代码内设置断点
4.浏览器访问页面url,即可触发IDE进入调试模式

轻轻的我走了,正如我轻轻的来