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. :(
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". –
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