我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在上一篇文章中,苏南大叔提到,可以利用xdebug官方提供的向导功能,快速获得符合自己实际情况的编译指南。文件见这里:https://newsn.net/say/php-xdebug-wizard.html

苏南大叔:如何安装php扩展xdebug之编译篇 - php-xdebug-compile
如何安装php扩展xdebug之编译篇(图13-1)

本篇文章里面,我们就具体看看,如何编译php的xdebug扩展。编译的主要依据,也就是上一篇所提到的向导模式的结果。

基本顺序

下面是向导模式所给出的安装指南。

1.Download xdebug-2.5.4.tgz
2.Unpack the downloaded file with tar -xvzf xdebug-2.5.4.tgz
3.Run: cd xdebug-2.5.4
4.Run: phpize (See the FAQ if you don't have phpize.

As part of its output it should show:

Configuring for:
...
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.

5.Run: ./configure
6.Run: make
7.Run: cp modules/xdebug.so /usr/local/Cellar/php56/5.6.31_7/lib/php/extensions/no-debug-non-zts-20131226
8.Edit /usr/local/etc/php/5.6/php.ini and add the line
zend_extension = /usr/local/Cellar/php56/5.6.31_7/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
9.Restart the webserver

第一步,下载最新版xdebug源码,并解压

截至到发稿时为止,xdebug的最新版是2.5.5,但是向导模式里面给出的建议,还是下载2.5.4版本。看了一下xdebug的向导模式的源码,可能是他们的一个小失误,没有更新这个向导的最新版定义所导致的。

苏南大叔:如何安装php扩展xdebug之编译篇 - source
如何安装php扩展xdebug之编译篇(图13-2)

大家可以到下载页面去看一下最新版本的源码地址,苏南大叔得到这个地址:

苏南大叔的环境是mac,直接双击就解压了。所以没有使用向导中给出的tar命令。

苏南大叔:如何安装php扩展xdebug之编译篇 - package
如何安装php扩展xdebug之编译篇(图13-3)

第二步,在解压的目录里面执行phpize和make。

需要在有config.m4这个文件的这一级执行phpize,否则会报错,找不到config.m4的。

苏南大叔:如何安装php扩展xdebug之编译篇 - package_2
如何安装php扩展xdebug之编译篇(图13-4)

phpize 
./configure
make

苏南大叔:如何安装php扩展xdebug之编译篇 - phpize
如何安装php扩展xdebug之编译篇(图13-5)

苏南大叔:如何安装php扩展xdebug之编译篇 - configure
如何安装php扩展xdebug之编译篇(图13-6)

苏南大叔:如何安装php扩展xdebug之编译篇 - make
如何安装php扩展xdebug之编译篇(图13-7)

苏南大叔:如何安装php扩展xdebug之编译篇 - make_2
如何安装php扩展xdebug之编译篇(图13-8)

在make的结果中,我们看到了最终的扩展文件的生成的模块位置。然后,我们就可以看到,这个千呼万唤始出来的xdebug.so文件了。

苏南大叔:如何安装php扩展xdebug之编译篇 - bingo
如何安装php扩展xdebug之编译篇(图13-9)

最后一步,在php.ini中启用xdebug.so

cp modules/xdebug.so /usr/local/Cellar/php56/5.6.31_7/lib/php/extensions/no-debug-non-zts-20131226
vi /usr/local/etc/php/5.6/php.ini
zend_extension = /usr/local/Cellar/php56/5.6.31_7/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so

上面的文字是xdebug给我的建议,我们领会其精神,『/usr/local/Cellar/php56/5.6.31_7/lib/php/extensions/no-debug-non-zts-20131226』,这个是我本机的php扩展的目录位置,这个设置的值来自于,phpinfo中的extension_dir。我们需要把上一步中生成的xdebug.so文件复制过来。当然了,如果本地没有对应目录的话,建立一个就好了。

苏南大叔:如何安装php扩展xdebug之编译篇 - extension_dir
如何安装php扩展xdebug之编译篇(图13-10)

苏南大叔:如何安装php扩展xdebug之编译篇 - so_dir
如何安装php扩展xdebug之编译篇(图13-11)

然后编辑一下php.ini文件,php.ini文件的路径,来自于phpinfo()中的『Loaded Configuration File』的取值。注意,官方建议中,写的是zend_extension=<全路径>/xdebug.so。苏南大叔实际上,用的是:zend_extension=xdebug.so。

苏南大叔:如何安装php扩展xdebug之编译篇 - php_ini
如何安装php扩展xdebug之编译篇(图13-12)

保存好php.ini之后,重启一下你的php-fpm(fastcgi模式)或者apache(module模式),试试看phpinfo的函数输出吧。如果你能看到下图中类似的字样,那么就可以证明基本上大功告成了。

苏南大叔:如何安装php扩展xdebug之编译篇 - phpinfo_xdebug
如何安装php扩展xdebug之编译篇(图13-13)

总结

当然,具体xdebug的真正使用,还是有一定的距离。具体的如何和ide结合使用php的单步调试功能,请期待苏南大叔的后续文章。https://newsn.net/tag/xdebug

最后ps一下:其实这个xdebug.so不自己编译的话,也可以使用brew进行安装。不过,鉴于brew的版本更新不及时性方面考虑的话,我们还是选择源码编译,更靠谱一些。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    pecl