在主机中通过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即可。