在主机中通过xdebug远程调试Vagrant虚拟机中drush脚本的方法

改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试。

1、首先需要调整cli方式的xdebug.ini配置:

sudo vi /etc/php5/cli/conf.d/xdebug.ini

[XDebug]
zend_extension="/usr/lib/php5/modules/xdebug.so"

xdebug.coverage_enable=0
xdebug.default_enable=0

xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_host=192.168.xxx.xxx
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_log=/tmp/xdebug.log
xdebug.remote_autostart=false

xdebug.idekey="PHPSTORM"

xdebug.max_nesting_level=256

其中的

xdebug.remote_host=192.168.xxx.xxx
需要改成你主机的IP地址

2、创建一个名为drush_debug.sh的脚本文件,其中设置cli调试需要的变量,为了方便,drush_debug.sh直接放在drupal项目的根目录下面,然后把下面的内容拷贝的drush_debug.sh,并保存。

#!/bin/bash
export XDEBUG_CONFIG="idekey=PHPSTORM" &&  
export PHP_IDE_CONFIG="serverName=drupalvm.dev" &&
drush "$@"

保存完成之后,使用chmod命令修改drush_debug.sh,使它具有执行权限。

3、配置phpstorm

关于上图的说明:

1). 要保证server的name和第二步的serverName一致

2). 勾选 use path mapping,设置Absolute path on the server为Vagrant虚拟机drupal项目所在的目录。

4、运行drush命令

进入drupal所在的目录,用drush_debug.sh代替原来的drush就可以进行调试了,记得在你需要的地方设置好断点。

5、如果是普通的cli调试,把第2步的

drush "$@"
改成
php "$@"
就可以了

因为非常简单,就不再做详细的说明。

6、关于windows下面Vagrant文件同步的说明:

Vagrantfile中的config.vm.synced_folder的本地路径可以采用相对于Vagrantfile所在文件的路径;并且,并不需要安装ntfs的插件来支持,同步的type直接写nfs即可。

原文地址:https://www.cnblogs.com/merryfreespace/p/5008995.html