Rey*_*rPM 22 php xdebug phpstorm
我想尝试 Xdebug 3.0.0RC1 来探索发生了什么变化以及随之而来的新功能。我也在使用最新的 PhpStorm 2020.3 EAP,它支持 Xdebug 3,不需要主要配置。下面是我的调试器的 PhpStorm 配置:
这是我为 Xdebug3 尝试的配置:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal # here I tried several combinations like: "localhost", "127.0.0.1", "172.17.0.1"
xdebug.client_port=9001 # here I tried several ports 9003 included with no success
Run Code Online (Sandbox Code Playgroud)
我也试过根本不添加client_host/client_port设置,但仍然失败。
我收到此错误:
Script php bin/console doctrine:cache:clear-metadata returned with error code 255
!! [17-Nov-2020 15:24:40 UTC] Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port) :-(
!! [17-Nov-2020 15:24:41 UTC] PHP Fatal error: Method class@anonymous::__toString() must not throw an exception, caught Symfony\Component\DependencyInjection\Exception\AutowiringFailedException: in /var/www/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php on line 233
Run Code Online (Sandbox Code Playgroud)
关于我的环境的一些信息:
奇怪的是(因为显然host.docker.internal我正在使用的 Docker 版本“不”支持,但它可以工作)并且很奇怪,同时以下配置确实适用于 Xdebug 2,即使调试器一直在侦听传入连接:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
注意:我已经在这里应用了 Xdebug 开发人员提供的解决方案。
Dan*_*iro 31
对我有用的是将“是”更改start_with_request为“” 。trigger
这对我有用:
xdebug.mode=debug
xdebug.start_with_request=trigger
xdebug.client_port=9003
Run Code Online (Sandbox Code Playgroud)
编辑:
正如评论中指出的,它们trigger/9003是默认设置。如果这个答案对您有用,则意味着某些内容正在覆盖默认设置,并且通过显式使用trigger/9003,您可以强制恢复默认设置。
小智 27
PHP 7.4
Docker
PHPStorm 2020.1
Xdebug 3.1.0
使用 Dockerfile 在您的 docker 容器中安装 Xdebug
RUN pecl install xdebug-3.0.1 && docker-php-ext-enable xdebug
Run Code Online (Sandbox Code Playgroud)
使用以下配置 php.ini:
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 1
Run Code Online (Sandbox Code Playgroud)
转到 PHPStorm - Settings - PHP - Debug - Xdebug 并将端口设置为9003(默认)
就是这样 (:
如果您只想在需要时启用/禁用调试器:只需安装一个名为“Xdebug helper”的浏览器扩展,选择“Debug”并从 php.ini 中删除“xdebug.start_with_request = yes”
[xdebug]
xdebug.mode = debug
xdebug.discover_client_host = 1
Run Code Online (Sandbox Code Playgroud)
Gan*_*der 14
我创建了一个非常简单的配置,使我可以Xdebug轻松地使用任何 PHP 版本(v2:5.6-7.1,v3:7.2-8.x)。我需要做的就是配置PhpStorm并docker-compose.yml在三个地方进行调试。
zend_extension=xdebug.so
; https://2.xdebug.org/docs/all_settings
; ------------------------------------
; Enables Step Debugging
xdebug.remote_enable=1
; ------------------------------------
; Address where IDE listening for incoming debugging connections
xdebug.remote_host=host.docker.internal
; ------------------------------------
; Port where IDE listening for incoming debugging connections
xdebug.remote_port=9003
; ------------------------------------
; Color var_dumps when in CLI
xdebug.cli_color=1
; ------------------------------------
Run Code Online (Sandbox Code Playgroud)
zend_extension=xdebug.so
; https://xdebug.org/docs/all_settings
; ------------------------------------
; Enables Step Debugging
xdebug.mode=debug,develop
; ------------------------------------
; Address where IDE listening for incoming debugging connections
xdebug.client_host=host.docker.internal
; ------------------------------------
; Port where IDE listening for incoming debugging connections
xdebug.client_port=9003
; ------------------------------------
; Color var_dumps when in CLI
xdebug.cli_color=1
; ------------------------------------
Run Code Online (Sandbox Code Playgroud)
version: '3.7'
services:
#...
dev74:
hostname: 'dev-74'
container_name: 'dev_74'
image: 'gander/dev:7.4'
volumes:
- './app/xdebug3:/www/localhost'
working_dir: '/www/localhost/public'
ports:
- '8074:80'
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
PHP_IDE_CONFIG: "serverName=dev.74"
#...
Run Code Online (Sandbox Code Playgroud)
XDEBUG_SESSION=1 XDEBUG_CONFIG=1 php script.php
Run Code Online (Sandbox Code Playgroud)
或者:
docker-compose exec dev74 bash -c 'XDEBUG_SESSION=1 XDEBUG_CONFIG=1 php index.php'
Run Code Online (Sandbox Code Playgroud)
这serverName:
PHP_IDE_CONFIG: "serverName=dev.74"
Run Code Online (Sandbox Code Playgroud)
这是 PhpStorm PHP 服务器的名称(如下面的屏幕截图所示)
以下是适用于各种浏览器的扩展列表: 浏览器调试扩展
PHP 7.3
Docker(适用于 Mac)
PhpStorm 2021.1
您可能不需要通过 PECL 安装它(这花了很长时间来构建,并且对我来说不起作用)。
我所做的只是添加php7.3-xdebug到我的apt-get install命令中并正确配置端口映射,如下所示:
在 Dockerfile 中添加:
RUN apt-get install -y php7.3-xdebug
在 docker-compose.yml 中,我映射了一个extra_host(这是我的秘密武器):
services:
web:
extra_hosts:
- "host.docker.internal:host-gateway"
Run Code Online (Sandbox Code Playgroud)
在 php.ini 中:
[xdebug]
xdebug.mode=debug
xdebug.client_host=host.docker.internal
;optionals: (uncomment if you need them)
;xdebug.start_with_request=yes
;xdebug.discover_client_host=1
Run Code Online (Sandbox Code Playgroud)
在 PhpStorm 中,我刚刚开始监听端口 9003 并根据我的需要配置服务器映射。
参考:
我要开始向 @LazyOne 表示衷心的感谢,他花了一些时间帮助我完成这件事,直到我们成功为止。以下是我目前的配置,并且运行良好:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.client_port=9005
Run Code Online (Sandbox Code Playgroud)
您还需要更新 Xdebug 端口File | Settings | Languages & Frameworks | PHP | Servers以反映新端口,但还需要启用侦听 Xdebug3 传入连接的选项。(我相信它在 PhpStorm 2020.3 中默认启用)
这是后端项目的设置,中间没有浏览器,我没有尝试过,但对于这些,您可能需要:
xdebug.start_with_request=yes
Run Code Online (Sandbox Code Playgroud)
而且File | Settings | Languages & Frameworks | PHP | Servers配置也不错。
注意:我们发现主机已启用 IPv6,我将其禁用,此外,通过
Help > Edit Custom VM options:向 IDE 添加了以下设置-Djava.net.preferIPv4Stack=true。将 IP4 设置添加到 IDE 后,我还没有尝试重新启用 IPv6 并查看 Xdebug 3 是否仍然有效