13

我非常喜欢使用内置服务器的 php,我非常喜欢phpdbg的外观。它让我想起了在 Ruby 领域的撬动。但我一直无法让它工作。phpdbg是否可以使用内置 Web 服务器运行用户?

例如,我希望如何工作:

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

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

或者(如果上面根本不可能),你如何使用文档谈论的“网络模拟” (在底部)?如何使用特定 URI 发出特定请求?

4

2 回答 2

6

如果我理解正确,phpdbg_break是解释器提供的功能,而不是任何扩展。您应该使用 phpdbg 服务器来模拟 Web 请求,而不是使用内置的 PHP 服务器。有关如何模拟请求的信息,请参阅http://phpdbg.com/docs/mocking-webserver和了解如何运行调试器的http://phpdbg.com/docs/simples 。

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

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

于 2015-05-04T19:38:48.527 回答
0

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

require "path_to_psysh_on_your_local_file_system";
\Psy\Shell::debug(get_defined_vars(), $this);

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

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

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


甚至看起来有一些关于Remote Debugging的工作正在进行,这可能会解决我的问题。

于 2016-07-26T19:24:02.187 回答