在 Laradock 中使用 Xdebug

Xdebug 很强,在 Laradock 中安装也非常简单。

首先打开 laradock 项目的 .env 文件,定位到下面两行:

# laradock/.env

WORKSPACE_INSTALL_XDEBUG=false

PHP_FPM_INSTALL_XDEBUG=false

将这两个选项设为 true 会分别在 workspacephp-fpm 容器中安装 xdebug 拓展

php-fpm 中安装 xdebug 是用来调试 Http 请求,比如调试浏览器、Postman 发起的请求,workspace 中安装 xdebug 可以调试 CLI 请求,比如 Artisan 命令、PHP 脚本

然后打开 laradock/php-fpm/xdebug.ini 文件,将前两行修改为如下:

# laradock/php-fpm/xdebug.ini

# before
xdebug.remote_host=dockerhost
xdebug.remote_connect_back=1

# after
xdebug.remote_host=docker.for.win.localhost # 如果你是 Mac 用户,修改为 docker.for.mac.localhost
xdebug.remote_connect_back=0

之后重新构建容器:

$ docker-compose up -d --force-recreate --build workspace php-fpm

我一般只在 php-fpm 安装 Xdebug,印象中在 workspace 安装 Xdebug 后调试时会收到很多调试请求,有点烦人

查看 xdebug 是否安装成功(该命令仅可查看 php-fpm 容器的 xdebug):

$ ./php-fpm/xdebug status

xDebug status
PHP 7.2.15 (cli) (built: Feb 21 2019 23:48:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.15, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans

然后打开 PHPStorm 的设置,找到 Lanuages & Frameworks -> PHP -> Servers,新建一个 Server,保存:

最后点击 Run -> Start Listing for PHP Debug Connections 开启 xdebug 调试监听:

打好断点后在浏览器发起请求,应该可以看到程序进入了断点:

另外在可以使用以下命令开启/关闭 php-fpm 容器的 xdebug:

$ ./php-fpm/xdebug start

$ ./php-fpm/xdebug stop
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
mouyong

我在 windows 的 docker 中死活弄不出来。一请求页面就无限加载,代码在 index.php 停着。然后也无法到达断点位置。最后放弃了

4年前 评论
varro (楼主) 4年前
mouyong (作者) 4年前

照着图片试试,有时候是 path map 不对,所以直接强制卡在index.php第一行语句上面了

fileScreen Shot 2019-08-18 at 4.42.39 PM

4年前 评论
mouyong 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!