今天一直在重写知乎日报,php爬虫运行一段时间后,分词模块出现了内存泄露。大致检查了下,没有发现原因,就打算装个xdebug来排查下(虽然还不会用 = =!)。本来按照[官方文档](http://xdebug.org/docs/install)的自动安装没有出现任何报错的,php.ini里面的
今天一直在重写知乎日报,php爬虫运行一段时间后,分词模块出现了内存泄露。大致检查了下,没有发现原因,就打算装个xdebug来排查下(虽然还不会用 = =!)。 本来按照[官方文档](http://xdebug.org/docs/install)的自动安装没有出现任何报错的,php.ini里面的`extension=xdebug.so`也添加了,但是phpstorm还是提示没有安装xdebug,而且提示在`/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/`目录里面找不到`xdebug.so`文件。我去目录查看了下,果然没有`xdebug.so`文件。 目测还是xdebug安装过程出现问题。在网上找了一通,发现xdebug生成的`xdebug.so`文件在`/usr/lib/php/modules/`,有点奇怪为什么不是在`/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/`。手动将`xdebug.so`文件移过去,然后运行phpinfo就出现了这个报错: PHP Warning: PHP Startup: imagick: Unable to initialize module Module compiled with module API=20090626 PHP compiled with module API=20100525 These options need to match in Unknown on line 0 提示Xdebug与PHP版本不适配,好了算了我手动装一遍看看。 改成手动安装,参照网上的[手动安装教程](http://chapter31.com/2013/05/29/installing-xdebug-on-mac-mountain-lion-10-dot-8-3/) # wget http://xdebug.org/files/xdebug-2.2.3.tgz # tar -xvzf xdebug-2.2.3.tgz # cd xdebug-2.2.3 # phpize # ./configure # make # sudo cp modules/xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20100525 运行,依旧还是Xdebug与PHP版本不适配错误。 然后才想起来phpstorm里面有识别到一个php5.3在`/usr/bin/`目录里面,我手动改到`/usr/local/php/bin/`。现在才知道到本机是装了两个PHP,默认对应的是5.3版本的在`/usr/bin/`,还有个识别不出来的在`/usr/local/php/bin/`。 这样问题就显然了,不管是自动还是手动安装,xdebug都是识别到的5.3版本的PHP,对应php5.3版本的`xdebug.so`生成在`/usr/lib/php/modules/`,也只能适用默认的5.3版本。我强行移到5.4版本的扩展目录下就自然会提示不匹配了。 知道了原因,解决问题就简单了: 1.先卸载默认版本的php。 # apt-get autoremove php5-common libapache2-mod-php5 php5-cli 2.把5.4版本设为默认,查了下只要把'/usr/local/php/bin/'加入[系统PATH](http://blog.csdn.net/dlutbrucezhang/article/details/8811456)就可以了。 # export PATH=/usr/local/php/bin/:$PATH 3.按照[官方文档](http://xdebug.org/docs/install)的自动安装。 # pecl install xdebug 再打开phpinfo就没有报错了,显示xdebug扩展已安装,phpstorm也提示正常。好了,明天来研究xdebug怎么用。
原文地址:Xdebug与PHP版本不适配问题, 感谢原作者分享。