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
配置无误:
浏览器配置
我使用的是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
然后就可以愉快得使用了~
PS: geben默认是通过创建新窗口来打开debug到的新buffer的,我个人觉得有点烦,所以我就配置了如下(切换buffer):
(custom-set-variables
'(geben-display-window-function (quote popwin:switch-to-buffer)))
Last modified on 2017-02-03