Использование phpdbg со встроенным сервером php?
Мне очень нравится использовать встроенный сервер php, и мне очень нравится внешний вид phpdbg. Это напоминает мне о подглядывании на земле Руби. Но у меня были проблемы с тем, чтобы заставить его работать. Можно ли запустить пользователя phpdbg
со встроенным веб-сервером?
Например, как бы я хотел, чтобы это работало:
- размещение
phpdbg_break();
в коде - Бег
php -S localhost:8000
в CLI - загрузка страницы / выполнение запроса, который выполняет код, содержащий
phpdbg_break();
в браузере или через curl - вхождение в phpdbg REPL, скорее всего, в том же экземпляре терминала /CLI, на котором был запущен встроенный сервер
Когда я пытаюсь это сделать, я получаю сообщение об ошибке phpdbg_break();
это неопределенная функция.
Или же (если вышеупомянутое просто невозможно), как вы используете "webmocking" , о котором говорят документы (внизу)? Как сделать конкретный запрос с конкретным URI?
2 ответа
Если я правильно понимаю, 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, я не знал этот инструмент, и он мне кажется очень хорошим; Я буду проверять это в ближайшие дни.
Я использую 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-сервер однопоточный и очень медленный, это иногда сводит меня с ума
Кроме этого, я доволен своим текущим рабочим процессом. Я был бы рад услышать мнение других людей по этому поводу.
Похоже, что в области удаленной отладки продолжается работа, которая может решить мои проблемы.