将 phpdbg 与内置 php 服务器一起使用?

Using phpdbg with the built-in php server?

我真的很喜欢在 Ruby 土地上使用 php built in server, and I really like the look of phpdbg. It reminds me of pry。但我一直无法让它发挥作用。 运行 用户 phpdbg 是否可以使用内置网络服务器?

例如,我会如何喜欢这个工作:

  1. 在代码中放置phpdbg_break();
  2. 运行在 CLI 中 php -S localhost:8000
  3. 在浏览器或通过curl
  4. 加载page/making执行包含phpdbg_break();代码的请求
  5. 闯入 phpdbg REPL 最有可能在启动内置服务器的同一个 terminal/CLI 实例中

当我尝试这个时,我得到一个错误,指出 phpdbg_break(); 是一个未定义的函数。

否则(如果以上根本不可能),您如何使用 "webmocking" that the docs talk about(在底部)?如何使用特定 URI 发出特定请求?

如果我理解正确的话,phpdbg_break是解释器提供的功能,而不是任何扩展。您应该使用 phpdbg 服务器,而不是使用内置的 PHP 服务器,并模拟 Web 请求。请参阅 http://phpdbg.com/docs/mocking-webserver for information on how to mock the request and http://phpdbg.com/docs/simples 了解如何 运行 调试器。

要向特定 URI 发出请求,我认为您需要设置 $_SERVER['REQUEST_URI'] 和可选的 $_SERVER['QUERY_STRING'] 以指向您要测试的 URL。 URI 将类似于“/path/to/file”,查询字符串将是 ?和 URL 中的#(即?page=2)

感谢您向我指出 phpdbg,我不知道该工具,但它似乎是一个非常好的工具;我会在接下来的几天对其进行测试。

出于同样的原因,我使用 psysh,只是因为它让我想起了 pry。我实际上使用这段代码代替 ruby.

中的 binding.pry
require "path_to_psysh_on_your_local_file_system";
\Psy\Shell::debug(get_defined_vars(), $this);

这对我来说已经足够好了。我遇到的唯一问题是:

  1. 无法连接到 CGI 中现有的 PHP 进程 运行,使用 nginx 或 apache 服务器
  2. 内置的 PHP 服务器是单线程的,非常 慢,这有时让我抓狂

除此之外,我对我目前的工作流程很满意。我很乐意听到其他人对此的意见。


似乎还有一些关于 Remote Debugging 的工作正在进行,这可能会解决我的问题。