jmjoy
个人博客
Docker+xdebug+emacs断点调试PHP程序

Table of Contents

Docker 配置

首先得有一个配置好的docker image, 这里使用laraedit ,homestead的docker替代版,已经包含了php的xdebug扩展。

然后运行docker run ...,这里省略。

查看宿主机的docker0的ip

$ ip addr show docker0
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::f4d2:49ff:fedd:28a0/64 scope link 
       valid_lft forever preferred_lft forever

运行 docker exec -it _the_name_of_your_container_ bash

配置/etc/php/7.0/fpm/conf.d/20-xdebug.ini如下 (其中172.17.0.1地址是通过上面ip addr show docker0这条命令得到的地址)

zend_extension=xdebug.so
xdebug.remote_enable=On
xdebug.remote_host=172.17.0.1

重启php-fpm

supervisorctl restart php-fpm7.0

通过phpinfo()确保php-xdebug配置无误:

phpinfo

浏览器配置

我使用的是firefox,需要一个叫theeasiestxdebug的扩展来控制xdebug的行为,chrome差不多, 也可以不安装扩展,但是需要自己设置url的query参数或者cookie。

Emacs配置

Emacs安装geben这个package,如果使用spacemacs的话可以使用geben layer

这里说一下spacemacs的配置方法

git clone https://github.com/rubberydub/spacemacs-geben.git ~/.spacemacs.d/geben

然后将geben添加到dotspacemacs-configuration-layers

然后就可以愉快得使用了~

debug

PS: geben默认是通过创建新窗口来打开debug到的新buffer的,我个人觉得有点烦,所以我就配置了如下(切换buffer):

(custom-set-variables
 '(geben-display-window-function (quote popwin:switch-to-buffer)))

Last modified on 2017-02-03