apocryphalauthor apocryphalauthor - 1 year ago 62
PHP Question

Using phpdbg with the built-in php server?

I really like using the php built in server, and I really like the look of phpdbg. It reminds me of pry in Ruby land. But I've been having trouble getting it to work. Is it possible to run user

with the build in web server?

E.g., how I would like this to work:

  1. placing
    in the code

  2. running
    php -S localhost:8000
    in the CLI

  3. loading the page/making the request that executes the code containing the
    in the browser or through curl

  4. breaking out into a the phpdbg REPL most likely in the same terminal/CLI instance that the built in server was started on

When I try this, I get an error that
is an undefined function.

Or else (if the above simply isn't possible), how do you use the "webmocking" that the docs talk about (at the bottom)? How to you make a specific request with a specific URI?

Answer Source

If I understand properly, phpdbg_break is a function provided by the interpreter, and not by any extension. Instead of using the built-in PHP server, you should use the phpdbg server, and simulate a web request. See http://phpdbg.com/docs/mocking-webserver for information on how to mock the request and http://phpdbg.com/docs/simples to know how to run the debugger.

To make a request to the specific URI, I think you need to set $_SERVER['REQUEST_URI'] and optionally $_SERVER['QUERY_STRING'] to point to the URL you want to test. URI will be something like '/path/to/file' and the querystring would be everything between the ? and the # in the URLs (ie ?page=2)

Thanks for pointing me to phpdbg, I didn't know that tool and it seems to be a very good one; I'll be testing it in the next days.