2013-03-01 17 views
8

PreambułaCzekam na połączenie (netbeans-xdebug) MAMP OS X

Po wielu godzin, byłem w stanie dostać NetBeans, aby połączyć się XDebug. Kilka miesięcy temu, po aktualizacji ze starej wersji MAMP do MAMP PRO, debugowanie działało bezbłędnie. Tydzień temu zaczął się flakey. Wygląda na to, że łączy się, ale nie zatrzyma się w punktach przerwania. Ponowne uruchomienie NetBeans (v7.0.1) i apache czasami działało przez krótki czas.

Naprawdę potrzebowałem go naprawić, więc zainstalowałem najnowszą wersję MAMP PRO (2.1.2). Teraz otrzymuję komunikat Oczekiwanie na połączenie na zawsze.

Testowanie Zrobiłem

Podczas oczekiwania na wysłanie połączenie jest tam z ruchomym pasku, patrzę, aby zobaczyć, czy to słuchanie. Jest ...

# lsof -i -n -P |grep 9001 
java 6496 tim 230u IPv6 0xffffff80239d8190  0t0 TCP *:9001 (LISTEN) 

w NetBeans php config mam interpreter ustawiony na: /Applications/MAMP/bin/php/php5.4.10/bin/php

wykonując następujące:

# /Applications/MAMP/bin/php/php5.4.10/bin/php -i | grep xdebug 

mówi mi, że xdebug działa podobnie jak phpinfo()

mam (wiele razy) potwierdził, że mam numer portu wszędzie takie same. Próbowałem portu 9000 i 9001.

robi ogon na xdebug.log następnie zainicjowanie sesji z przeglądarki bez rozpoczynania sesji debugowania w NetBeans produkuje:

I: Connecting to configured address/port: localhost:9001. 
E: Could not connect to client. :-(

Z czekając na połączenie wiadomości i inicjowania sesji z przeglądarki, uzyskać to w dzienniku:

: Connecting to configured address/port: localhost:9001. 
I: Connected to client. :-) 
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///Users/tim/MAMPSites/facts.tvd.us/htdocs/sendfile/tim.php" language="PHP" protocol_version="1.0" appid="7279" idekey="netbeans-xdebug"><engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init> 

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response> 

Mój plik php.ini ma następujący:

[xdebug] 
zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" 
xdebug.remote_enable=on 
xdebug.remote_log="/var/log/xdebug.log" 
xdebug.remote_host=localhost 
xdebug.remote_handler=dbgp 
xdebug.remote_port=9001 
xdebug.idekey="netbeans-xdebug" 

Aktualizacja

Właśnie zauważyłem, że polecenie lsof powyżej pokazuje NetBeans nasłuchuje na IPv6. Zmuszanie java (NetBeans) do korzystania z ipV4 nie pomaga.

launchctl setenv JAVA_TOOL_OPTIONS -Djava.net.preferIPv4Stack=true 

Znalazłem post sugerujący test potwierdzający, że xdebug działa poprawnie. Utwórz plik PHP:

<?php 
$address = '127.0.0.1'; 
$port = 9000; 
$sock = socket_create(AF_INET, SOCK_STREAM, 0); 
socket_bind($sock, $address, $port) or die('Unable to bind'); 
socket_listen($sock); 
$client = socket_accept($sock); 
echo "connection established: $client"; 
socket_close($client); 
socket_close($sock); 
?> 

uruchomić go z linii poleceń i załadować dowolną stronę w przeglądarce z następujących czynności na końcu URL:

?XDEBUG_SESSION_START=nb 

Jeśli wyprowadza coś w stylu „to połączenie : Resource id # 5 ", xdebug działa poprawnie. Po tym ponownie zainstalowałem Java i NetBeans. Powiedziałem NetBeansowi, aby NIE importował moich obecnych preferencji ... Nadal nie ma połączenia.

Update2

Zainstalowałem phpStorm IDE for Mac. Dowiedziałem się o nim wystarczająco dużo, aby uruchomić debugger z istniejącymi ustawieniami MAMP i xdebug. Myślę, że to potwierdza problem z NetBeans.

W tym momencie uzyskanie tej pracy wydaje się niemożliwe. :(

+1

Moje ostateczne rozwiązanie tego problemu ... Ja całkowicie włączone do phpStorm. Po kilku dniach używania wydaje się znacznie lepszym IDE (moim zdaniem). Debugowanie po prostu "działa". –

+0

Dokładnie to samo tutaj! Próbowałem zainstalować xdebug z netbeans przez 2 tygodnie, potem zrezygnowałem i przełączyłem na PHPStorm (na Windows7 btw). Działa doskonale po wyjęciu z pudełka. Czasami warto zapłacić za dobre oprogramowanie. – Sliq

Odpowiedz

7

Poprosiłem samo i got to dość dobrą odpowiedź: How to track execution time of each line/block of lines/methods in PHP?, poza tym, że mam tę odpowiedź także od aktualnie uruchomionego inne pytanie z tej samej treści

Niektóre Dodatkowe uwagi na to (rzeczy i. Wcześniej zebrane w inne tak stanowisk w moich własnych badań z tym problemu):

  1. port może być także 9001 (wydaje się działać dla niektórych ludzi, podczas gdy 9000 nie)
  2. Przejście do PHPStorm IDE. prawdziwa alternatywa, która rozwiązuje ten problem (jako że PHPStorm włączył całkowicie działający xdebug już).
  3. Pobierz nową wersję xdebug za pomocą kreatora (http://xdebug.org/wizard.php), a jeśli będziesz postępować zgodnie z instrukcjami, może będziesz miał szczęście.
  4. Wyłączenie zapory może pomóc.
  5. Dodaj do php.ini: xdebug.idekey=netbeans-xdebug.
  6. Sprawdź, czy masz plik xdebug.ini i dodaj do tego pliku linie php.ini powiązane z xdebug.
  7. musisz usunąć komentarz linii zend_extension (tj. Usunąć ; na początku), więc Xdebug jest faktycznie załadowany.
  8. Upewnij się, że Xdebug jest załadowany, wywołując phpinfo() z pliku PHP (tylko, aby mieć pewność).
+1

Dzięki. Dodanie 'xdebug.idekey = netbeans-xdebug' do php.ini zrobiło dla mnie magię. –

+0

Dodanie xdebug.idekey = netbeans-xdebug również naprawiło mój problem z NetBeans. Zainstalowałem również PHPStorm, ale niestety nie zainstalowałem XDebug, który wymagał wielu dodatkowych kroków, a mimo to nie mógł wykonać debugowania. Chociaż jest to niesamowite IDE, ale za prawie 150 USD rocznie spodziewałem się, że będzie działać od razu po wyjęciu z pudełka lub przy minimalnej konfiguracji, co nie miało miejsca.Na razie zostanę z NetBeans. – zeeshan

0

Po czystym pobraniu i zainstalowaniu netbeans pracujących na xampp, xdebug pracował z wyjątkiem nie zatrzymywał się w punktach przerwania. Zmieniono php.ini na: xdebug.remote_enable = 1 (od 0) i xdebug działało zgodnie z oczekiwaniami!

5

Xdebug połączy się, jeśli w folderze projektu znajduje się plik index.php, sprawdź więc, czy go masz.

+0

Masz rację. Jeśli istnieje tylko plik index.html, nie zadziała – ironbone

1

to działa teraz dla mnie. Mam zainstalowaną LAMPĘ. Zmodyfikowałem zgodnie ze wszystkimi odpowiedziami z powyższego, zacząłem apache2 i teraz leci ... jestem szczęśliwy ... przez jakiś czas myślałem, aby przejść do phpstorm, ale ja ponownie przemyślałem ... poprawić trochę więcej ... et voila. to działa.

Oto co mam w php.ini

zend_extension = /usr/lib/php5/20121212/xdebug.so 

xdebug.max_nesting_level = 250 
xdebug.auto_trace=On 
xdebug.remote_enable=On 
xdebug.remote_port=9001 
xdebug.remote_handler=dbgp 
xdebug.remote_host=localhost 
xdebug.remote_log="/var/log/xdebug.log" 
xdebug.trace_output_dir=/var/www/AMRO 
xdebug.idekey="netbeans-xdebug"