我正在尝试调试 WP 安装中的 REST Api 问题。它崩溃了,我必须找出原因。
我的问题是,当我从 postman 访问 Api 端点时,我无法让 Xdebugger 连接到 IDE。当从 IDE 启动时,我可以从 Netbeans 标准 URL 顺利运行,但在等待连接并从 Postman 触发时无法连接到 IDE。
我坚信 PHP.ini 设置没问题。Apache Web 服务器在同一台机器上运行,因此无需路径映射(但这并不重要)。
机器操作系统是Windows 10。我的配置如下:
- 配置邮递员:POSThttp://localhost/test/wp-json/wp/v2/posts?XDEBUG_SESSION_START=netbeans-xdebug&title=测试&status=publish&content=blah 身份验证 = JWT。在标题中设置。
高级 Web 配置设置为:“proxy='',port: 9000”,调试 URL:“始终询问”
开始调试 -> 弹出窗口要求输入 URL:输入'http://localhost/test/wp-json/wp/v2/posts'-> IDE 等待 xdebug 连接。
cmd 中的 netstat:netstat -na | 找到“LISTENING”| 找到“127”
返回 = 无!
Netbeans 没有监听!我检查了所有我能想到的东西。PHP.ini 中的端口设置肯定是正确的,工具 -> 选项->PHP 端口 9000 与 PHP.ini 匹配。
我仍然无法让那该死的东西做出反应。呜呜呜呜……真令人沮丧。有人能帮忙吗?
注意:邮递员发送的帖子执行良好,状态良好,并显示在 WP 中。想想看……:-/
xdebug.log
[4464] Log opened at 2019-04-24 16:41:09
[4464] I: Connecting to configured address/port: 127.0.0.1:9000.
[4464] E: Time-out connecting to client (Waited: 200 ms). :-(
[4464] Log closed at 2019-04-24 16:41:09
Xdbug fires but can not find a listner.
PHP.ini
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"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_connect_back = 0
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = req
xdebug.remote_log = "c:/xampp/tmp/xdebug/xdebug_remot.log"
xdebug.show_local_vars = 9
xdebug.trace_output_dir = "c:/xampp/tmp"
xdebug.remote_cookie_expire_time=36000
答案1
是的,解决了。像往常一样,睡个好觉就解决了。我睡觉的时候大脑在做家务(小房子要保持整洁 :-),问题解决了。问题只是让 IDE 监听来自 Xdebug 的连接请求。所以在我的项目配置->运行配置->项目网址中:http://localhost/测试(无论您的 WP 项目是什么),索引文件:index.php。高级对话框->始终询问。保存配置。
当我开始调试时;->Url 询问弹出;http://localhost/wp-json/wp/v2/posts与之前相同。按 Enter
会发生什么以及您将看到什么;
当您从 IDE 启动调试会话时,Web 浏览器将弹出一个窗口,其中包含来自端点的 JSON 输出。当然,您只是从 IDE 调用它 :-) 如果您在 index.php 中有一个断点,它将命中该断点。
刚刚发生了什么?IDE 成功启动了与接收器的调试会话。IDE 现在将有一个打开的会话,它将对通过 Xdebug 的每个事件做出响应,并在 Header/或 URL 中设置 XDEBUG-SESSION-START=netbeans-xdebug cookie 作为参数。当然,这是因为 Netbeans 在主菜单->工具->选项->php->调试对话框中配置了相同的 cookie。
- 那会做什么?没错,现在对任何 JSON REST Api 端点的每次调用都通过 Xdebug。现在您可以调试任何需要弄清楚的 REST 调用。Hallelulja - 交出钱 :-) 感谢编写 Xdebug 的伟大人物 Derick Rethans。超级人物 :-)