尝试在 Windows 上使用 PHP 7.4 和 XAMPP 3.2.4 下的 NetBeans 8.2 RC 进行调试
Trying to Debug on Windows with PHP 7.4 and NetBeans 8.2 RC under XAMPP 3.2.4
问题:我目前无法在 Windows10 上的 NetBeans 8.2 RC 中调试 php。NetBeans 在右下角显示“等待连接”并且从不连接。
我找到的大多数教程都是几年前的:
- Codewall article //2018...最新?
- Michael Milette's Tutorial //看起来很彻底,但是从 2014 年开始
- NetBeans site // 引用 php 5...哎呀!
- Rob Prouse's Tutorial //2010
请注意,其中一些对于应包含的内容有不同的说明 php.ini
Xdebug 东西
phpinfo()
将 Xdebug 列为 运行ning version 2.9.4 with IDE Key: netbeans-xdebug 所以至少它被识别了。
相关 php.ini [XDebug] 信息:
...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.idekey = netbeans-xdebug
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_connect_back = 0
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log="c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.show_local_vars = 9
xdebug.trace_output_dir = "c:\xampp\tmp"
; 3600 (1 hour), 36000 = 10h
xdebug.remote_cookie_expire_time = 36000
来自 phpinfo() 的调试信息
'netstat -an' netbeans 等待连接时的结果
注意57418和9000之间的双向连接
xdebug 错误日志
[10112] Log opened at 2020-07-27 15:33:34
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:34
[10112] Log opened at 2020-07-27 15:33:47
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
[10112] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
[10112] Log closed at 2020-07-27 15:33:51
[10112] Log opened at 2020-07-27 15:33:52
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:52
[10112] Log opened at 2020-07-27 15:34:05
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
php_xdebug-2.9.4-7.4-vc15-x86_64.dll was the dll recommended by xdebug.org/wizard and is at the expected file location.
NetBeans 配置
因为我正在尝试调试 WordPress 插件,所以我将整个 'wordpress' 目录作为我在 NetBeans 中的项目。
来源:
嗯...PHP 版本设置为 7.0,我正在尝试使用 7.4...但它说“PHP 版本仅用于提示”。这只是“NetBeans 8.2 RC 不支持 PHP 7.4”的简单案例吗?
运行配置:
感谢任何帮助。提前致谢。
编辑:包括来自 phpinfo() 的 xdebug 信息、netstat 结果和 xdebug 转储。
可能有帮助
更改行为以再次启动浏览器后,我注意到该项目没有加载
“?XDEBUG_SESSION_START=netbeans-xdebug”标志,直到 我点击停止。这对我来说似乎很奇怪,但我尝试启动调试器,点击停止(以启动带有标志的网站),然后 然后 附加调试器。它不起作用(NetBeans 在 'waiting for connection' 上旋转,Chrome 在 'waiting for localhost' 上旋转)。 Chrome 最终加载,但第二次我尝试开始导航到站点的一部分 运行 我正在尝试调试的 php 代码,它返回到 'waiting for localhost' 使用以下 xdebug 转储(它永远不会离开主页):
[22340] Log opened at 2020-07-27 15:49:37
[22340] I: Connecting to configured address/port: 127.0.0.1:9000.
[22340] I: Connected to client. :-)
[22340] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="22340" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
对于试图让 NetBeans 正常工作的可怜人来说,答案是……不要使用 NetBeans。我知道这是一个糟糕的答案,但与 20 分钟让 VSCode 工作 NetBeans 相比,5 小时后试图让它工作是没有意义的(除非你有其他使用它的原因)。
为了让 VSCode 工作,我主要遵循了这个教程:https://stackify.com/php-debugging-guide/
结合以下 php.ini 设置:
...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
注意我实际需要的设置有多么少!
问题:我目前无法在 Windows10 上的 NetBeans 8.2 RC 中调试 php。NetBeans 在右下角显示“等待连接”并且从不连接。
我找到的大多数教程都是几年前的:
- Codewall article //2018...最新?
- Michael Milette's Tutorial //看起来很彻底,但是从 2014 年开始
- NetBeans site // 引用 php 5...哎呀!
- Rob Prouse's Tutorial //2010
请注意,其中一些对于应包含的内容有不同的说明 php.ini
Xdebug 东西
phpinfo()
将 Xdebug 列为 运行ning version 2.9.4 with IDE Key: netbeans-xdebug 所以至少它被识别了。
相关 php.ini [XDebug] 信息:
...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.idekey = netbeans-xdebug
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_connect_back = 0
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log="c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.show_local_vars = 9
xdebug.trace_output_dir = "c:\xampp\tmp"
; 3600 (1 hour), 36000 = 10h
xdebug.remote_cookie_expire_time = 36000
来自 phpinfo() 的调试信息
'netstat -an' netbeans 等待连接时的结果
xdebug 错误日志
[10112] Log opened at 2020-07-27 15:33:34
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:34
[10112] Log opened at 2020-07-27 15:33:47
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
[10112] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
[10112] Log closed at 2020-07-27 15:33:51
[10112] Log opened at 2020-07-27 15:33:52
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:52
[10112] Log opened at 2020-07-27 15:34:05
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
php_xdebug-2.9.4-7.4-vc15-x86_64.dll was the dll recommended by xdebug.org/wizard and is at the expected file location.
NetBeans 配置
因为我正在尝试调试 WordPress 插件,所以我将整个 'wordpress' 目录作为我在 NetBeans 中的项目。
来源:
嗯...PHP 版本设置为 7.0,我正在尝试使用 7.4...但它说“PHP 版本仅用于提示”。这只是“NetBeans 8.2 RC 不支持 PHP 7.4”的简单案例吗?
运行配置:
感谢任何帮助。提前致谢。 编辑:包括来自 phpinfo() 的 xdebug 信息、netstat 结果和 xdebug 转储。
可能有帮助 更改行为以再次启动浏览器后,我注意到该项目没有加载 “?XDEBUG_SESSION_START=netbeans-xdebug”标志,直到 我点击停止。这对我来说似乎很奇怪,但我尝试启动调试器,点击停止(以启动带有标志的网站),然后 然后 附加调试器。它不起作用(NetBeans 在 'waiting for connection' 上旋转,Chrome 在 'waiting for localhost' 上旋转)。 Chrome 最终加载,但第二次我尝试开始导航到站点的一部分 运行 我正在尝试调试的 php 代码,它返回到 'waiting for localhost' 使用以下 xdebug 转储(它永远不会离开主页):
[22340] Log opened at 2020-07-27 15:49:37
[22340] I: Connecting to configured address/port: 127.0.0.1:9000.
[22340] I: Connected to client. :-)
[22340] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="22340" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
对于试图让 NetBeans 正常工作的可怜人来说,答案是……不要使用 NetBeans。我知道这是一个糟糕的答案,但与 20 分钟让 VSCode 工作 NetBeans 相比,5 小时后试图让它工作是没有意义的(除非你有其他使用它的原因)。
为了让 VSCode 工作,我主要遵循了这个教程:https://stackify.com/php-debugging-guide/
结合以下 php.ini 设置:
...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
注意我实际需要的设置有多么少!