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

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

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

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

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

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

13

Решение

Если я правильно понимаю, phpdbg_break это функция, предоставляемая интерпретатором, а не каким-либо расширением. Вместо использования встроенного сервера PHP, вы должны использовать сервер phpdbg и имитировать веб-запрос. Увидеть http://phpdbg.com/docs/mocking-webserver для получения информации о том, как смоделировать запрос и http://phpdbg.com/docs/simples знать, как запустить отладчик.

Чтобы сделать запрос на конкретный URI, я думаю, вам нужно установить $_SERVER['REQUEST_URI'] и опционально $_SERVER['QUERY_STRING'] указать URL-адрес, который вы хотите проверить. URI будет что-то вроде «/ путь / к / файлу», а строка запроса будет все между? и # в URL (то есть? page = 2)

Спасибо, что указали мне на phpdbg, я не знал этот инструмент, и он мне кажется очень хорошим; Я буду проверять это в ближайшие дни.

6

Другие решения

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

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

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

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

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


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

0

По вопросам рекламы [email protected]