一、前言
PHP的调试(尤其是断点调试、变量跟踪)一直是一个老大难的问题,现在网上流行的方法是采用Xdebug+IDE模式,其中IDE主要使用PHPStorm。但是Xdebug+PHPStorm配置过程比较复杂,网上流行的教程有很多过时,甚至错误的地方,近期由于工作的原因,需要对一套DEDECMS系统进行调试更改,其中需要对代码进行断点调试,按照PHPStorm+远程服务器+Xdebug模式进行了部署,现将其过程记录下来,争取使其他读者可以触类旁通,不必查找其他资料。
二、环境说明
1、IDE:PHPStorm 2019.2
2、 OS:天翼云云主机Centos7.3;PHP:PHP 5.4.16
3、Web:Apache 2.4.6
三、安装Xdebug
1、选择正确的Xdebug版本
不同的PHP采用的Xdebug是不相同的,官方网站是推荐访问 https://xdebug.org/wizard ,将其phpinfo();html的内容粘贴进文本框,由网站来分析采用哪种版本的xdebug。但是我使用这种方式的时候,提示:PHP version 5.4 is not supported。
官方文档中,有xdebug的兼容性说明,https://xdebug.org/docs/compat
可以从上图中可以看到,应该安装xdebug 2.4
2、安装xdebug
在官网https://xdebug.org/download 下载xdebug源代码,在Linux中进行安装
#安装phpize,在Centos中,需要安装php-devel
yum install php-devel
tar -xzf xdebug-2.4.1.tgz
cd xdebug-2.4.1
phpize
./configure --enable-xdebug
./make
./make install
编辑 /etc/php.ini,增加以下内容
[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
;如果没有下面这一句话,表示默认端口为9000
xdebug.remote_port=9000
注意:PHP5.3以上的版本后,
只能使用zend_extension, 不能使用 zend_extension_ts, zend_extension_debug, 或则 extension 加载动态链接库,这个和很多的文档介绍不一样。
重新启动httpd进程
systemctl restart httpd
使用phpinfo();查看php信息,出现以下以下图示,表示xdebug加载正常
3、在远程服务器的防火墙中,开放9000的端口访问权限
很重要,很多教程没有提及这个步骤,导致最后无法远程调试