PhpStorm 被动监听请求
PhpStorm passively listen to requests
我想使用 PhpStorm 10 和 xdebug 调试 php 脚本。我的设置如下:
客户端在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()
服务器端在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 and this page 我只能在启动 "start debug" 小书签时调试我的页面。我的 python 请求没有被 PhpStorm 的调试器捕获。我想被动地监听(不使用小书签)并在 php 调试器中捕获所有请求,无论它们的来源如何(python、移动、不同的 php 脚本)。
发送 python 请求时,是否有可用于调试 php 脚本的配置?
您需要告诉 xdebug 您要调试此请求。
这正是 bookmarkets/browser 扩展所做的——它们设置了与下一页请求一起发送的 xdebug cookie。您可以通过 XDEBUG_SESSION_START 将 cookie 替换为实际的 GET 或 POST 参数——例如将此类参数添加到您的 conn.request(...
行。
或者,您可以告诉 xdebug 自动调试每个请求(通过 php.ini
中的 xdebug.remote_autostart = 1
),这可能是不需要的,并且可能有一些 "side effects"(如果调试客户端不可用,执行延迟大约 1 秒——xdebug 等待可能的客户端响应的时间)。这与您已经在使用的 zero config approach("phone handle" 图标)一致。
如果您正在使用此选项,请不要忘记在 php.ini 中进行更改后重新启动您的 Web 服务器(或 php-fpm
,如果您正在使用它)。否则,这些更改不太可能在重新启动之前自动获取(在大多数设置中默认情况下)。
P.S.
PhpStorm 具有内置的简单 REST Client 可通过 Tools | Test RESTful Web Service
访问,您可以使用它来发送自定义请求(而不是使用您的真实客户端(在您的情况下为 python 代码))。
由于 PhpStorm v11(即将发布)您可以直接从那里启动调试(专用 "Debug" 按钮)而不是添加 xdebug cookie/query 参数.
另一种选择是使用类似的基于浏览器的工具(例如 Chrome 的 Postman)。
我想使用 PhpStorm 10 和 xdebug 调试 php 脚本。我的设置如下:
客户端在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()
服务器端在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 and this page 我只能在启动 "start debug" 小书签时调试我的页面。我的 python 请求没有被 PhpStorm 的调试器捕获。我想被动地监听(不使用小书签)并在 php 调试器中捕获所有请求,无论它们的来源如何(python、移动、不同的 php 脚本)。
发送 python 请求时,是否有可用于调试 php 脚本的配置?
您需要告诉 xdebug 您要调试此请求。
这正是 bookmarkets/browser 扩展所做的——它们设置了与下一页请求一起发送的 xdebug cookie。您可以通过 XDEBUG_SESSION_START 将 cookie 替换为实际的 GET 或 POST 参数——例如将此类参数添加到您的 conn.request(...
行。
或者,您可以告诉 xdebug 自动调试每个请求(通过 php.ini
中的 xdebug.remote_autostart = 1
),这可能是不需要的,并且可能有一些 "side effects"(如果调试客户端不可用,执行延迟大约 1 秒——xdebug 等待可能的客户端响应的时间)。这与您已经在使用的 zero config approach("phone handle" 图标)一致。
如果您正在使用此选项,请不要忘记在 php.ini 中进行更改后重新启动您的 Web 服务器(或 php-fpm
,如果您正在使用它)。否则,这些更改不太可能在重新启动之前自动获取(在大多数设置中默认情况下)。
P.S.
PhpStorm 具有内置的简单 REST Client 可通过 Tools | Test RESTful Web Service
访问,您可以使用它来发送自定义请求(而不是使用您的真实客户端(在您的情况下为 python 代码))。
由于 PhpStorm v11(即将发布)您可以直接从那里启动调试(专用 "Debug" 按钮)而不是添加 xdebug cookie/query 参数.
另一种选择是使用类似的基于浏览器的工具(例如 Chrome 的 Postman)。