为了账号安全,请及时绑定邮箱和手机立即绑定

想要 Xdebug -- 使用 Win10 WSL Ubuntu 20、vscode

想要 Xdebug -- 使用 Win10 WSL Ubuntu 20、vscode

PHP
慕莱坞森 2023-07-08 21:48:44
在Laravel中启动一个新项目。在Win10 v2004 (2020年4月)下使用最新的WSL2而不是Homestead。一切都很好。现在我勇敢地想要使用Xdebug来设置 PHP 断点。我已经在WSL中的Ubuntu 20中安装了Xdebug。~/STGdev/lv $ php -vPHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologies    with Xdebug v3.0.0-dev, Copyright (c) 2002-2020, by Derick Rethans    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies我无法让任何断点工作。最大的问题是 --- vs code Xdebug扩展是否使用Ubuntu PHP还是需要我在 Windows 下安装XAMPP PHP ?说明中暗示可以使用其中之一吗?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

您不需要安装 XAMPP,所有设置都由安装了 PHP 的 WSL 管理。我在 Windows 10 21H2 中使用 WSL2 (Ubuntu 20) 有一个带有 docker 的 Laravel 项目,这是我使 xdebug 工作的设置。我使用 Xdebug 2.9.8,xdebug.ini 中的文本有一些更改,但大部分是相同的。


PHP 7.1.33 (cli) (built: Nov 22 2019 18:34:33) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

    with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans

如果您使用将项目/文件从 Windows 挂载到 WSL2 环境

xdebug.ini


xdebug.remote_enable = On

xdebug.remote_autostart = On

xdebug.remote_connect_back = Off

xdebug.remote_host = "host.docker.internal"

xdebug.remote_port=9009 

Dockerfile


FROM php:7.1-fpm

RUN pecl install xdebug-2.9.8 \

&& docker-php-ext-enable xdebug

COPY xdebug.ini /usr/local/etc/php/conf.d/

Docker-compose.yml


services:

 webapp:

  working_dir: /var/www/html

  volumes:

  - ./my-project-folder:/var/www/html

进入您的项目文件夹,输入code .以使用 WSL 打开项目,然后创建调试文件 (launch.json):(通过单击扩展并选择“启用”在 WSL 中启用 PHP Xdebug 扩展)


"name": "Listen for Xdebug",

"type": "php",

"request": "launch",

"port": 9009,

"pathMappings": {

    "/var/www/html": "${workspaceFolder}"

}

如果您使用 wsl 文件系统(在 wsl 环境中克隆您的项目,而不是从 Windows 挂载它):设置几乎与 (1) 类似,但您需要一些额外的修改:

Docker-compose.yml


extra_hosts:

  - "host.docker.internal:host-gateway"

VS Code 的 launch.json


"hostname": "0.0.0.0",

就这样。根据我的经验,第二种方法比第一种方法快得多。


查看完整回答
反对 回复 2023-07-08
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您有两个选项来启用调试:

  • 使用VSCode Remote - WSL 扩展,让 VSCode 为您配置其他所有内容

  • 在 php.ini 中配置 XDebug远程配置

我的建议是使用 WSL 扩展方法。

请记住,如果您决定使用扩展方法,则会出现 Git 无法正确识别修改后的文件的问题


查看完整回答
反对 回复 2023-07-08
?
侃侃无极

TA贡献2051条经验 获得超10个赞

您已经安装了 XDebug 3。Xdebug 的版本 3 改变了您需要配置其设置的方式。最重要的重大变化是监听端口现在是9003而不是9000。这是我的本地主机中 Xdebug 3 的php.ini配置(它应该可以在任何地方工作):


[xdebug]

zend_extension="C:\xampp\php\ext\php_xdebug-3.0.4-7.4-vc15-x86_64.dll"

xdebug.mode=develop,debug

xdebug.client_host=127.0.0.1

xdebug.client_port=9003

xdebug.start_with_request=trigger

更改 Xdebug 扩展的路径,您现在应该可以调试代码了。


查看完整回答
反对 回复 2023-07-08
  • 3 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信