Использование 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?
Ответы
Ответ 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 является однопоточным и очень медленным, это иногда меня сводит с ума
Кроме этого, я доволен своим текущим рабочим процессом. Я был бы рад услышать мнение других людей по этому поводу.
Похоже, что там происходит некоторая работа над "Удаленная отладка" , которая может решить мои проблемы.