一直以来,调试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查看,截图如下:
注意:
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与调试器无法通信
DBGp Proxy
配置IDE key,与前面的xdebug.idekey保持一致。(Host和Port填写与xdebug.remote_host和xdebug.remote_port保持一致[貌似不一致也是可行的,一般是localhost和80])
进入调试模式
断点调试分3种模式:脚本调试、web application运行调试、浏览器访问自动触发调试。
脚本调试
该模式下允许本地脚本运行时断点调试,步骤如下:
1.设置断点
2.右键选中脚本
3.选择Debug即可
web application运行调试
该模式允许指定url访问web页面进行php代码调试,步骤如下:
1.设置断点
2.配置web application
3.开启Debug
其中配置web application的详细步骤如下:
1.选择“Edit Configuration”:
2.添加“PHP Web Application”:
3.配置详细过程:
4.配置成功后的效果图:
浏览器调试
该模式下,浏览器需要安装调试的插件,之后浏览器访问某个页面url,自动触发IDE进入调试模式,步骤如下:
1.安装浏览器debug插件,并且需开启debug模式
chrome安装插件Xdebug helper
firefox安装的插件The easiest Xdebug
注意:插件内的IDE key配置必须与xdebug.idekey保持一致
2.PhpStorm开启监听连接
3.代码内设置断点
4.浏览器访问页面url,即可触发IDE进入调试模式