用Atom调试PHP

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了用Atom调试PHP脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

其实是很容易的一件事情,就因为一个端口的问题,费了好大劲,且听我慢慢道来。

安装xdebug

首先,我们要安装xdebug。在Mac上的安装方法相对简单brew install php56-xdebug就好了。但是这里也遇到了一些小障碍,首先它说我原先用brew安装的php56不够新,那么就brew upgrade php56好了,结果它又说xcode不够新,那好,先升级XCode,结果升级完了XCode还是说不行,在.configure的时候找不到zlib库,原来还需要在命令行执行xcode-select --install,执行完这个之后再执行brew upgrade php56,顺利通过。于是brew install php56-xdebug,这次顺利通过。

安装php-debug插件

接下来,我们直接在Atom里搜索插件php-debug,安装通过,执照它的要求,在/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini文件中添加以下行:

[xdebug]
zend_extension="/usr/local/opt/php56-xdebug/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1    # Not safe for PRoduction servers
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=false

请注意,这里一定要把xdebug.remote_autostart设为false,因为如果你不把这里设置为false的话,下一步安装的浏览器插件就不会起作用。

安装chrome插件

安装Xdebug Helper。这一步也相对比较容易,缺省安装就可以。安装之后就是这个样子,当你需要debug的时候,点击这个小甲虫把它变成绿色就可以了。我们上面一个步骤把autostart设为false就是为它服务的,如果你在上一步没有把autotart设为false的话,那么不论你按不按,每一个请求都会debug。

用Atom调试PHP

联合调试

问题就出在这里,无论我如何刷新页面,Atom里的debug总是启动不起来。我一开始强烈怀疑是不是这个xdebug就没有启动,没有监听呢?于是我执行以下命令

sudo lsof -ITCP -sTCP:LISTEN -n -P

得到以下结果:

Atomx20H 84631   27u  IPv6 0xdc8cd80c818ef9f      0t0  TCP *:9000 (LISTEN)
php-FPM   85455    6u  ipv4 0xdc8cd80d825f02f      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm   85460    0u  Ipv4 0xdc8cd80d825f02f      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm   85461    0u  IPv4 0xdc8cd80d825f02f      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm   85462    0u  IPv4 0xdc8cd80d825f02f      0t0  TCP 127.0.0.1:9000 (LISTEN)

我一开始不太理解原理,我以为php-fpm监听9000端口和Atom监听9000端口都是由于这一句设置

xdebug.remote_port=9000

导致的,虽然隐隐约约感觉这里不对,但是也没有多想,还在疯狂尝试各种方法,甚至加上了

xdebug.remote_LOG=/VAR/log/xdebug.log

查看我刷新页面时是否有请求发送给php-fpm,每次刷新页面时确实有请求进来,但总是连不通,无论如何刷新页面,Atom永远都是Listening状态:

用Atom调试PHP

万般无奈之下,回去读文章,在最关键处读到原来xdebug里的9000端口设置是为连接远端设置的,也就是说xdebug本身不是服务器,而我们的Atom里的php-debug才是服务器!是我们的Atom在监听9000端口,而位于php-fpm里面的xdebug配置9000不是让它去监听9000,而是向我们这个Atom的9000端口发请求!

那我们的php-fpm的9000端口监听又是哪里来的呢?原来php-fpm的缺省配置/usr/local/etc/php/5.6/php-fpm.conf也是9000端口!

listen = 127.0.0.1:9000

所以是Atom和php-fpm在争夺9000端口!或者说xdebug误导了Atom去使用9000端口。

了解了这个,接下来就好办了,我们把ext-xdebug.ini里的xdebug.remote_port改成9090

xdebug.remote_port=9090

再把Atom里的php-debug监听端口改为9090

用Atom调试PHP

这时候再在Chrome里面刷新页面,不再是Listening状态,变为Connected状态了!

用Atom调试PHP

原先之所以没有人提到这个,是因为大家通常都是直接用apache调用php,没有使用php-fpm,所以没有遇到这个问题。如果你也使用php-fpm的话,这篇文章一定对你有帮助。

脚本宝典总结

以上是脚本宝典为你收集整理的用Atom调试PHP全部内容,希望文章能够帮你解决用Atom调试PHP所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。