PhpStorm被动地侦听请求

2024-04-29 20:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用phpstorm10和xdebug调试一个php脚本。我的设置如下:

  1. 客户端是python。客户端发送json数据。客户端的代码是(contact是包含json的变量):

    conn = httplib.HTTPConnection('192.168.2.103:85')
    headers = {"Content-type": "application/json", "charset" : "utf-8"}
    body = json.dumps(contact, ensure_ascii = 'False')
    conn.request('POST', '/web_service/index.php', body, headers)
    response = conn.getresponse()
    
  2. 服务器端使用php。在服务器端,我将xdebug设置为:

    zend_extension = "E:\_Dizertatie\php\ext\php_xdebug.dll"
    xdebug.profiler_enable = 1
    xdebug.profiler_output_dir = "E:\_Dizertatie\tmp"
    xdebug.remote_enable =true
    xdebug.remote_host = "127.0.0.1"
    xdebug.remote_port = 9000
    

使用这个guide和这个page我只能在启动“启动调试”bookmarklet时调试我的页面。我的python请求没有被PhpStorm的调试器捕获。我希望被动地侦听(不使用bookmarklet)并在php调试器中捕获所有请求,不管它们的源代码是什么(python、mobile、不同的php脚本)。你知道吗

在发送python请求时,有没有配置可以用来调试php脚本?你知道吗


Tags: 脚本json客户端remoteenable服务器端contactbody
1条回答
网友
1楼 · 发布于 2024-04-29 20:27:22

您需要告诉xdebug您想要调试这个请求。你知道吗

这正是bookmarkets/browser扩展所做的,它们设置了xdebug cookie,该cookie与下一页请求一起发送。您可以通过XDEBUG_SESSION_START用实际的GET或POST参数替换cookie,例如,将这样的参数添加到conn.request(...行。你知道吗


或者,您可以让xdebug自动调试每个请求(通过php.ini中的xdebug.remote_autostart = 1),这可能是不需要的,并且可能有一些“副作用”(如果调试客户端不可用,则执行延迟约1秒xdebug等待可能的客户端响应的时间)。这与您正在使用的zero config approach(“电话手柄”图标)有关。你知道吗

如果您正在使用这个选项,那么不要忘记在中进行更改之后重新启动您的web服务器(或者php-fpm,如果您正在使用它)php.ini文件. 否则,在重新启动之前(在大多数设置中默认情况下),这些更改不太可能被自动拾取。你知道吗


附言 PhpStorm有内置的简单的REST Client可通过Tools | Test RESTful Web Service访问,您可以使用它来发送定制请求(而不是使用真正的客户端(在您的例子中是python代码))。你知道吗

由于phpstormv11(即将发布),您可以直接从那里启动调试(专用的“调试”按钮),而不是添加xdebug cookie/查询参数。你知道吗

另一种选择是使用类似的基于浏览器的工具(例如,用于Chrome的Postman)。你知道吗

相关问题 更多 >