如何在PHPStorm和Vagrant环境下安装Xdebug

in PHP with 6 comments

如今,我们常使用vagrant虚拟环境与其提供的灵活性进行开发。不管你在什么平台上,你都不必再配置繁琐的开发环境,仅仅使用vagrant就可以配置一模一样的环境提供给你的同事、学生使用。

但是我们在虚拟环境中开发,使用Xdebug就有点麻烦了,因为在默认情况下,它只针对本地的主机提供服务。

Xdebug是一个PHP的扩展,它可以允许PHP开发者调试与分析代码,追踪错误。如果你不熟悉它,可以在看本篇文章之前,参考一些Xdebug的相关教程。

在这篇文章,我将教你如何在PHPStorm和Vagrant虚拟环境下配置Xdebug。

准备工作

准备一个vagrant虚拟环境,安装和启动Homestead(Laravel集成包),当你进入到Laravel的欢迎界面,代表准备工作已经完成了。

安装Xdebug

如果你在使用Homestead和一些其他内置Xdebug的LNMP一键安装包的话,可以跳过这一步。你也可以使用phpinfo()函数查看Xdebug的安装情况。

1

或者通过查看PHP-FPM和PHP CLI的conf.d目录:

ls /etc/php5/fpm/conf.d
ls /etc/php5/cli/conf.d
2

如果你看到了xdebug.ini的相关配置项,则代表它已经加载成功了。如果你使用了不带xdebug的集成包,可以去搜索引擎查看如何安装xdebug的教程。

配置xdebug.ini

为了允许xdebug的远程特性,我们需要修改它的配置文件,并且加上几条配置语句。Homestead的xdebug.ini默认位置在/etc/php5/mods-available,找到以下语句:

zend_extension=xdebug.so

在这条语句下面,添加:

xdebug.remote_enable = on
xdebug.remote_connect_back = on
xdebug.idekey = "vagrant"

保存配置文件,重启Homestead或者PHP-FPM(sudo service php5-fpm restart),这就是配置xdebug的全部过程了。

配置PHPStorm—服务器

PHPStorm也同样需要一些配置,首先我们在PHPStorm中打开Laravel项目目录:

3

然后,打开PHPStorm配置项,依次进入PHP->Servers,添加一个新服务器。给新主机起个名字并给它8000端口。在host的下面,把你项目的站点域名(本地)填上去(Homestead默认是homestead.app)。然后,做路径地图映射,这样就可以让PHPStorm定位虚拟环境中的目录。基本上,可以按照下面这张动图配置:

4

配置PHPStorm—进行Debug的配置

要在项目中运行debugger,我们需要创建一个debug环境。打开Run->Edit Configurations。在这里,创建一条「PHP Web Application 」的新配置项:

5

应用新的配置,并关闭此配置窗口。

测试一下

以上便是所有的配置过程了,下面我们来测试一下Xdebug是否可以正确的工作。

首先我们在Laravel项目的路由(app/routes.php)中添加:

Route::get('/', function()
{
    $a = [1, 2, 3, 4, 5];

    array_pop($a);

    return View::make('hello');
});

然后,在路由的代码中添加几个断点:

6

然后打开Run->Debug,选中你刚才添加的配置项,这时会在浏览器中弹出你的项目地址,如果项目被正确打开了,PHPStorm将会弹出debug的选项卡,里面记录的程序的运行流程和错误追踪。

7

总结

Xdebug本身十分容易使用,只是遇上vagrant和PHPStorm的时候配置起来会有些繁琐,基本上分为以下几步:首先在vagrant环境中安装xdebug,在xdebug.ini中加上允许远程工作的语句。然后在PHPStorm的配置中正确配置debug服务器和目录映射就可以了。

这是我翻译的一篇文章,原文地址。通过这篇教程我成功配置好了Xdebug+PHPStrom+Vagrant,如果你碰上了什么问题可以在我这篇博文下面留言。

Responses
选择表情选择表情
  1. Ice

    昨天折腾了半天都没搞定 icon_surprised.gif ,今天看到你的文章重新走了一遍配置phpstorm就好了,非常感谢! icon_mrgreen.gif

    可是我真的很不喜欢IDE,虽然phpstorm感觉非常方便,但是写代码还是sublime vscode爽啊

    Reply
  2. Debug 不要加“PHP Web Application”,要增加一个“PHP Remote Debug”配置。在配置里面会填写 ide key,这样就不需要在 xdebug.ini 设置这个 key。

    Reply
  3. 学习一下,大爱。

    Reply
  4. 谢谢博主分享,受教啦

    Reply
  5. 一直想问底下的链接是啥

    Reply
    1. @DIYgod

      有买链接的人,每月给20块,给他挂5个链接提权重。

      Reply