Подтвердить что ты не робот

Использование phpdbg со встроенным php-сервером?

Мне очень нравится использовать php встроенный сервер, и мне очень нравится внешний вид phpdbg. Это напоминает мне pry на земле Ruby. Но у меня проблемы с работой. Возможно ли запустить пользователя phpdbg со сборкой на веб-сервере?

Например, как я хотел бы, чтобы это работало:

  • размещение phpdbg_break(); в коде
  • работает php -S localhost:8000 в CLI
  • загрузка страницы/выполнение запроса, который выполняет код, содержащий phpdbg_break(); в браузере или через curl
  • выйдя в phpdbg REPL, скорее всего, в том же экземпляре терминала /CLI, что встроенный сервер был запущен на

Когда я пытаюсь это сделать, я получаю сообщение об ошибке, что phpdbg_break(); является функцией undefined.

Или иначе (если выше это просто невозможно), как вы используете "webmocking" о которых говорят docs (внизу)? Как вам сделать конкретный запрос с определенным URI?

4b9b3361

Ответ 1

Если я правильно понимаю, phpdbg_break - это функция, предоставляемая интерпретатором, а не каким-либо расширением. Вместо использования встроенного PHP-сервера вы должны использовать phpdbg-сервер и имитировать веб-запрос. См. 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, я не знал этого инструмента, и он кажется очень хорошим; Я буду тестировать его в ближайшие дни.

Ответ 2

Я использую psysh по той же причине, только потому, что он напоминает мне pry. Я использую этот фрагмент кода вместо binding.pry из ruby.

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

Это достаточно хорошо для меня. Единственная проблема, с которой я сталкиваюсь:

  • Невозможно подключиться к существующему процессу PHP, работающему в CGI, с серверами nginx или apache
  • Встроенный сервер PHP является однопоточным и очень медленным, это иногда меня сводит с ума

Кроме этого, я доволен своим текущим рабочим процессом. Я был бы рад услышать мнение других людей по этому поводу.


Похоже, что там происходит некоторая работа над "Удаленная отладка" , которая может решить мои проблемы.