vagrant默认已经安装好xdebug,可通过phpinfo()来确认。
下面是配置的步骤:
Xdebug 与 PhpStorm 如何与 vagrant 进行沟通?
xdebug 与 phpstorm 之间的通信是client-server模式。其中 xdebug 是 client, 他需要访问 phpstorm。而 vagrant 就是他们之间沟通的桥梁。
配置xdebug
首先通过命令行连接上vagrant
vagrant ssh
再输入命令
netstat -r
记住Gateway那一项的IP,通常是:
10.0.2.2
打开xdebug配置文件
cd /etc/php5/mods-available
vi xdebug.ini
将该文件内容改为:
zend_extension=/usr/lib/php5/20131226/xdebug.so
xdebug.idekey="debugit"
xdebug.remote_host=10.0.2.2
xdebug.remote_port=10000
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_handler="dbgp"
配置phpstorm,让他能够接受来自xdebug的请求
ctrl+alt+s 打开phpstorm 配置窗口,进入 Languages & Frameworks -> PHP -> Debug页面,将xdebug的端口设为10000,并确认勾选 can accept external connection项。点击apply保存。
对于phpstorm,vagrant相当于一个远程服务器,所以需要为phpstorm添加这个服务器以便通信。进入 Languages & Frameworks -> PHP -> server页面,填写你的 vagrant 服务器信息,重要的是将你的本地代码与虚拟机代码映射起来(只需要映射 项目根目录 与 站点根目录)
添加一个php解释器,进入 Languages & Frameworks -> PHP 页面
写博客时我已经导入完成了,正常情况下,第一次设置需要手动导入vagrant自带的php解释器。点击Interpreter右侧的[...]按钮,弹出以下窗口:
点击+新建一个解释器,Remote选择Vagrant,Remote目录就是你键入vagrant ssh的目录,接下来填写可执行php文件的目录,如果填写正确,点击右侧蓝色同步按钮后,就会自动识别出解释器的版本信息。
创建一个phpstorm debug 配置
在IDE的工具栏点击Run->Edit Configurations
点击+创建一个PHP Web Application,为他起一个名字,并将Server设置为之前创建的Vagrant,点击apply保存。
点击 Run->start listening for php debug connections:
最后,在vagrant本地目录下重启虚拟机:
vagrant reload
在IDE设置好断点,并点击 Run->Debug 'Vagrant'就可以进行调试了。
此时可以清楚地看到栈信息,由于代码在断点处停止执行,浏览器报 504 Timeout。
以上,phpstorm8 + vagrant + xdebug 的配置完毕。