Xdebug 未监听端口 (Windows)
Xdebug not listening on port (Windows)
我按照文档中的描述在我的 Windows 2019 服务器上安装了 Xdebug。但是服务器没有在给定的端口上侦听。
我的 php.ini 设置:
[xDebug]
zend_extension="C:\Program Files\PHP\ext\php_xdebug-3.0.4-8.0-vs16-nts-x86_64.dll"
xdebug.start_with_request = yes
xdebug.client_host = x.x.x.x
xdebug.client_port = 9003
xdebug.mode = trace, debug
xdebug.collect_assignments = true
xdebug.collect_return = true
xdebug.log = "C:\inetpub\logs\xDebug.log"
xdebug.log_level = 7
xdebug.output_dir = "C:\inetpub\logs\xDebug"
xdebug.trace_output_name = trace.%H
但是如果我检查netstat -aon
,服务器没有监听端口9003
。不管我加什么端口号。安装是全新的 Windows Server 2019,配置了 IIS 和 PHP。
C:\Users\Administrator>php -v
PHP 8.0.9 (cli) (built: Jul 29 2021 14:12:27) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans
在日志文件中,我只得到:
[2236] Log opened at 2021-08-05 08:38:25.637570
[2236] [Step Debug] INFO: Connecting to configured address/port: x.x.x.x:9003.
[2236] [Step Debug] ERR: Time-out connecting to debugging client, waited: 200 ms. Tried: 10.233.233.2:9003 (through xdebug.client_host/xdebug.client_port) :-(
[2236] Log closed at 2021-08-05 08:38:25.864249
跟踪工作正常。
它在我的 Windows 10 21H1 机器上也不起作用。同样的问题。
But if I check with netstat -aon
, the server is not listening on the port 9003
这是正确的,因为 IDE 需要侦听来自 Xdebug 的传入连接 。后者连接到 IDE.
这也在文档中:https://xdebug.org/docs/step_debug#configure:
…you need to tell Xdebug where to make the debugging connection to, as
it is Xdebug that initiates the communication to the IDE, and not the
other way around.
通过配置 client_host 和 client_port,您可以告诉 xDebug 连接到哪里。然后你应该监听传入的连接,例如,在你的 IDE 中。如果你想在远程服务器上调试代码,并在本地使用 PhpStorm,你可能需要设置 ssh 隧道以允许远程 xdebug 连接到你的本地机器。参见 https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html#debug-php-cli-scripts-with-remote-php-interpreters-or-via-ssh-tunnel
我按照文档中的描述在我的 Windows 2019 服务器上安装了 Xdebug。但是服务器没有在给定的端口上侦听。 我的 php.ini 设置:
[xDebug]
zend_extension="C:\Program Files\PHP\ext\php_xdebug-3.0.4-8.0-vs16-nts-x86_64.dll"
xdebug.start_with_request = yes
xdebug.client_host = x.x.x.x
xdebug.client_port = 9003
xdebug.mode = trace, debug
xdebug.collect_assignments = true
xdebug.collect_return = true
xdebug.log = "C:\inetpub\logs\xDebug.log"
xdebug.log_level = 7
xdebug.output_dir = "C:\inetpub\logs\xDebug"
xdebug.trace_output_name = trace.%H
但是如果我检查netstat -aon
,服务器没有监听端口9003
。不管我加什么端口号。安装是全新的 Windows Server 2019,配置了 IIS 和 PHP。
C:\Users\Administrator>php -v
PHP 8.0.9 (cli) (built: Jul 29 2021 14:12:27) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans
在日志文件中,我只得到:
[2236] Log opened at 2021-08-05 08:38:25.637570
[2236] [Step Debug] INFO: Connecting to configured address/port: x.x.x.x:9003.
[2236] [Step Debug] ERR: Time-out connecting to debugging client, waited: 200 ms. Tried: 10.233.233.2:9003 (through xdebug.client_host/xdebug.client_port) :-(
[2236] Log closed at 2021-08-05 08:38:25.864249
跟踪工作正常。
它在我的 Windows 10 21H1 机器上也不起作用。同样的问题。
But if I check with
netstat -aon
, the server is not listening on the port 9003
这是正确的,因为 IDE 需要侦听来自 Xdebug 的传入连接 。后者连接到 IDE.
这也在文档中:https://xdebug.org/docs/step_debug#configure:
…you need to tell Xdebug where to make the debugging connection to, as it is Xdebug that initiates the communication to the IDE, and not the other way around.
通过配置 client_host 和 client_port,您可以告诉 xDebug 连接到哪里。然后你应该监听传入的连接,例如,在你的 IDE 中。如果你想在远程服务器上调试代码,并在本地使用 PhpStorm,你可能需要设置 ssh 隧道以允许远程 xdebug 连接到你的本地机器。参见 https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html#debug-php-cli-scripts-with-remote-php-interpreters-or-via-ssh-tunnel