2015-02-27 2 views
12

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

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

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

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

Или иначе (если это просто невозможно), как вы используете «webmocking» that the docs talk about (внизу)? Как сделать конкретный запрос с определенным URI?

+0

Невозможно использовать встроенный отладчик со встроенным веб-сервером на языке, в значительной степени предназначенном для создания веб-страниц ... Только PHP –

ответ

6

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

+0

Чтобы уточнить, возможно, вам даже не нужно устанавливать $ _SERVER [ 'REQUEST_URI']; это будет зависеть от того, как ваша инфраструктура маршрутизирует запрос на комбинацию Controller :: method. –

0

Я использую 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 или апача серверов
  2. встроенный PHP сервер однопоточный и очень медленно, это сводит меня с ума иногда

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


Это даже похоже, что есть какая-то работа продолжается около Remote Debugging, которые могут решить свои проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^