2015-02-27 16 views
12

Bardzo lubię korzystać z php built in server i bardzo podoba mi się wygląd phpdbg. Przypomina mi to pry w rubinowej krainie. Ale mam problem z uruchomieniem go. Czy można uruchomić użytkownika phpdbg z wbudowanym serwerem WWW?Korzystanie z phpdbg z wbudowanym serwerem php?

Np jak bym jak to do pracy:

  1. umieszczenie phpdbg_break();w kodzie
  2. systemem php -S localhost:8000w CLI
  3. ładowanie strony/składającego wniosek, że wykonuje kod zawierający phpdbg_break();w przeglądarce lub poprzez zawinięcie
  4. wyrwanie się do A REPL phpdbg najprawdopodobniej w tym samym terminalu/instance CLI, że wbudowany serwer został uruchomiony na

Kiedy próbuję to pojawia się błąd, że phpdbg_break(); jest niezdefiniowana funkcja .

Albo (jeśli powyższe po prostu nie jest możliwe), w jaki sposób używasz "webmocking" that the docs talk about (na dole)? Jak utworzyć konkretną prośbę o konkretnym identyfikatorze URI?

+0

Nie można używać wbudowanego debuggera z wbudowanym serwerem internetowym w języku zaprojektowanym tak, aby tworzyć strony internetowe ... Tylko PHP –

Odpowiedz

6

Jeśli dobrze rozumiem, phpdbg_break jest funkcją zapewnioną przez tłumacza, a nie przez żadne rozszerzenie. Zamiast używać wbudowanego serwera PHP, powinieneś używać serwera phpdbg i symulować żądanie sieciowe. Zobacz http://phpdbg.com/docs/mocking-webserver, aby uzyskać informacje o tym, jak kpić z żądania i http://phpdbg.com/docs/simples, aby dowiedzieć się, jak uruchomić debugger.

Aby przesłać żądanie do konkretnego identyfikatora URI, należy ustawić $_SERVER['REQUEST_URI'] i opcjonalnie $_SERVER['QUERY_STRING'], aby wskazać adres URL, który chcesz przetestować. Identyfikator URI będzie podobny do "/ path/to/file", a querystring będzie wszystkim pomiędzy? i # w adresach URL (tj.? page = 2)

Dzięki za skierowanie mnie do phpdbg, nie znałem tego narzędzia i wydaje mi się ono bardzo dobre; Będę testował to w ciągu następnych dni.

+0

Aby to wyjaśnić, być może nie trzeba nawet ustawiać $ _SERVER [ "REQUEST_URI"]; będzie zależeć od tego, w jaki sposób twój framework kieruje zapytanie do kombinacji Controller :: method. –

0

Używam psysh z tego samego powodu, tylko dlatego, że przypomina mi pry. Właściwie używam tego fragment kodu w miejsce binding.pry z ruby.

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

Jest to wystarczająco dobre dla mnie. Jedyny problem mam z tym jest:

  1. Nie można podłączyć do istniejącego procesu PHP z systemem w CGI z nginx lub serwerów Apache
  2. Wbudowany serwer PHP jest pojedynczy gwintowany i bardzo powolny, to doprowadza mnie do szału czasami

Poza tym, jestem zadowolony z mojej obecnej pracy. Byłbym szczęśliwy, słysząc inne opinie na ten temat.


nawet wygląda tam pewne prace dzieje około Remote Debugging, który może rozwiązać moje problemy.