2015-04-16 24 views
8

Próbuję debugować aplikację symfony2 przy pomocy xdebug i phpstorm.phpstorm xdebug z projektem symfony2

moim lokalnym środowisku programistycznym jest Ubuntu 14.04 z apache2 i wersja Xdebug jest 2.2.7

mam ten pracuje na innym php (nie Symfony2) projektów z następujących instrukcji:

https://www.jetbrains.com/phpstorm/help/configuring-xdebug.html

https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm

Kiedy wykonuję bookmarlet, aby ustawić ciasteczko i rozpocząć debugowanie tego projektu symfony2, phpstorm wykrywa połączenie przychodzące (które akceptuję), ale nie dzieje się inaczej. Nie zatrzymuje się w żadnym punkcie przerwania.

Mam wtyczkę symfony2 phpstorm. Próbowałem go wyłączyć i nic nie dostałem.

Ten answer wyglądało dobrze do mnie, ale to nie załatwiło sprawę albo

Ostatnią rzeczą próbowałem to zmienić konfigurację serwerów debugowania, wyłączenie mapowania ścieżki. W ten sposób phpstorm rozpoczyna debugowanie, ale zepsuje się w pliku app_dev.php zamiast dowolnego punktu przerwania, który ustawiłem.

siedzę tutaj, każdy pomysł byłby appreacite

UPDATE

Więcej informacji nie wspominając:

  • używam firefox Usiłuję debugowania dev środowiska
  • Punkty przerwania są w działaniu w kontrolerze moich własnych, a nie dostawców.

UPDATE

Oto moja konfiguracja xdebug

[XDebug] 
zend_extension="/usr/lib/php5/20121212/xdebug.so" 
xdebug.remote_enable=1 
xdebug.remote_port="9000" 
xdebug.profiler_enable=1 
xdebug.profiler_output_dir="<AMP home\tmp>" 
+0

jakiego środowiska próbujesz debugować? prod lub dev? A w jakich plikach ustawiasz punkty przerwania? niestandardowe lub dostarczone przez sprzedawców? –

+0

Dzięki @TomaszMadeyski Próbuję debugować środowisko dev, breakpoinst są w działaniach w moim kontrolerze. Aktualizuję moje pytanie z tymi informacjami. – y2josei

Odpowiedz

3

To był problem z mapowaniem. Poniżej przedstawiono kroki, które wystarczyły

  1. Wyłącz mapowanie ścieżką pod Ustawienia> Języki & szkieletowe> PHP> Serwery> odznacz „mapowania użycia ścieżki
  2. Rozpocznij debugowanie
  3. Słynny„Remote ścieżka pliku „ścieżka /to/script/on/the/server.php”nie jest mapowany do dowolnej ścieżki pliku w projekcie„wreszcie pojawia
  4. Wtedy mogłem śledzić sekcję Rozwiązywanie problemów w official guide konfigurowania mapowania ścieżki

Mam nadzieję, że pomoże to komuś innemu

9

nie wiem jakiej przeglądarki używasz, ale przy użyciu Chrome, używam rozszerzenie pomocnika Xdebug.

Po zainstalowaniu rozszerzenia kliknij prawym przyciskiem myszy> opcje i wybierz PHPStorm jako IDE.

Następnie rozpocznij słuchanie połączenia na PHPStorm za pomocą przycisku w pobliżu debugera.

EDIT:

Oto moja konfiguracja XDebug:

zend_extension=/usr/lib/php5/20121212/xdebug.so 
xdebug.max_nesting_level = 1000 
xdebug.collect_params = 1 
xdebug.collect_return = 1 
xdebug.remote_enable = 1 

Czy na pewno XDebug jest prawidłowo zainstalowana na komputerze?

Kiedy w PHPStorm>Run>Edit Configurations..., dodać PHP Web profil debugowania aplikacji i wypełnić go w ten sposób:

  • Nazwa: Acme Projekt
  • Server: apache2 (może trzeba dodaj swoją - nazwę, port, adresse, debugger)
  • URL strony: /app_dev.php
  • Przeglądarka: Domyślnie

Naciśnij OK i gotowe!

+0

Dziękuję @Rybus, to jest dobre. Ale chciałbym nadal używać firefox. Aktualizuję również moje pytanie z informacjami o przeglądarce. – y2josei

+0

FYI. Wypróbowałem to w Chrome i to nie działa. Nie pojawia się nawet połączenie przychodzące, chociaż myślę, że być może dlatego, że wcześniej zrobiłem – y2josei

+0

Właśnie zredagowałem swoją odpowiedź, aby podać nowe szczegóły na temat mojej konfiguracji;) – Rybus

6

Miałem podobny problem, który ponownie okazał się problemem odwzorowania, zdalnie debugując projekt Symfony 2 przy użyciu PHPStorm.

Jeśli PHPStorm nie może odwzorować lokalizacji pliku src, zostanie złamane w pierwszym wierszu kodu w app_dev.php (jeśli ustawiono opcję "Przerwij w pierwszym wierszu"), a następnie kontynuuj od razu przez ustawione punkty przerwania in/src (np. Kontrolery, modele itp.) i nie zgłasza żadnego błędu.

  1. przejdź do Ustawienia -> Języki & Konstrukcje -> PHP -> Serwery
  2. Wybierz serwer w panelu środkowym lewej (lub dodać za pomocą '+')
  3. Sprawdź „mapowania Wykorzystanie ścieżek (wybierz jeśli serwer jest zdalny lub używane są dowiązania symboliczne) "
  4. Dodaj mapowania takie, że/app,/src i/web są zamapowane. Mogą to być pojedyncze odwzorowania, ale lepiej, jeśli to możliwe, ustawić mapowanie wyższego poziomu na/które obejmuje je wszystkie.

Gdy PHPStorm może odwzorować te ścieżki, zatrzymuje się i zatrzymuje punkty oraz może rozpocząć istotne debugowanie.

+0

Dziękuję bardzo @stanhope !! Próbowałem to rozgryźć przez około 2 godziny! Działa jak urok. Uważaj, odwzorowanie tylko pliku 'app.php' będzie przez niego przebiegać i nigdy nie przejdzie do faktycznego kontrolera, ale zakończy sesję debugowania. –

+1

Do punktu 4 można dodać przykład mapowania lokalnego i zdalnego? Jako punkty wejścia znajdują się w/web (czyli request/-> web /), z czym mapujesz inne lokalizacje? Używałem xdebug kilka razy, ale w projekcie, którego używam, nie można już pracować. Dociera do app_dev.php, jeśli włączam break w pierwszej linii, ale nigdy nie zatrzymuję się w punktach przerwania. Mam zainstalowaną wtyczkę symfony na phpstorm – Bizmate

1

Jeśli okaże się, że PHPStorm wciąż prosi o mapowania, spróbuj utworzyć mapowanie na najwyższym poziomie projektu, o którym wspomniał już @stanhope, to powinno wystarczyć.

Moje pierwsze mapowanie zostało niepoprawnie ustawione na plik app_dev.php w/web, co oznaczało, że IDE ciągle prosił mnie o odwzorowanie do plików w katalogach dostawców.

np./vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Response.php

enter image description here

1

miałem też wypowiedzieć się ładowanie klasy pamięci podręcznej (Symfony 2.7). Zrobiłem go tymczasowo w web/app_dev.php

//$kernel->loadClassCache(); 

Inaczej debugowanie odbyła się w bootstrap.php.cache lub wartości graniczne nie działa.

Powiązane problemy