PreambleWaiting For kết nối (netbeans-Xdebug) OS X MAMP
Sau nhiều giờ, tôi đã không thể có được NetBeans để kết nối với Xdebug. Vài tháng trước, sau khi nâng cấp từ một phiên bản cũ của MAMP lên MAMP PRO, việc gỡ lỗi hoạt động hoàn hảo. Một tuần trước, nó bắt đầu nổi lên. Nó sẽ xuất hiện để kết nối nhưng sẽ không dừng lại ở các điểm ngắt. Khởi động lại NetBeans (v7.0.1) và apache đôi khi có nó làm việc trong một thời gian ngắn.
Tôi thực sự cần nó cố định vì vậy tôi đã cài đặt phiên bản MAMP PRO mới nhất (2.1.2). Bây giờ tôi nhận được tin nhắn Waiting For Connection mãi mãi.
Testing Tôi đã làm
Trong khi chờ đợi tin nhắn kết nối là có với thanh di chuyển, tôi nhìn để xem nếu nó nghe. Đó là ...
# lsof -i -n -P |grep 9001
java 6496 tim 230u IPv6 0xffffff80239d8190 0t0 TCP *:9001 (LISTEN)
Trong NetBeans php cấu hình tôi đã phiên dịch thiết lập để: /Applications/MAMP/bin/php/php5.4.10/bin/php
Thực thi như sau:
# /Applications/MAMP/bin/php/php5.4.10/bin/php -i | grep xdebug
nói với tôi Xdebug đang chạy cũng như phpinfo()
tôi có (nhiều lần) khẳng định rằng tôi có số cổng tương tự ở khắp mọi nơi. Tôi đã thử cổng 9000 và 9001.
Làm một cái đuôi trên xdebug.log sau đó bắt đầu một phiên làm việc từ trình duyệt mà không bắt đầu một phiên debug trong NetBeans sản xuất:
I: Connecting to configured address/port: localhost:9001.
E: Could not connect to client. :-(
Với sự chờ đợi cho thông điệp kết nối và bắt đầu một phiên làm việc từ trình duyệt, tôi có được điều này trong nhật ký:
: 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>
file php.ini của tôi có những điều sau đây:
[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"
Cập nhật
Tôi chỉ nhận thấy rằng các lệnh lsof trên cho thấy NetBeans lắng nghe trên IPv6. Buộc java (NetBeans) để sử dụng ipV4 không giúp đỡ.
launchctl setenv JAVA_TOOL_OPTIONS -Djava.net.preferIPv4Stack=true
Tôi tìm thấy bài đăng đề xuất kiểm tra để xác nhận xdebug đang hoạt động chính xác. Tạo một file 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);
?>
Run nó từ dòng lệnh và tải bất kỳ trang nào trong trình duyệt của bạn với những điều sau đây vào cuối url:
?XDEBUG_SESSION_START=nb
Nếu nó ra một cái gì đó như "kết nối thành lập : ID tài nguyên # 5 ", xdebug đang hoạt động chính xác. Cùng với đó, tôi đã cài đặt lại Java và NetBeans. Tôi đã nói với NetBeans KHÔNG nhập các sở thích hiện có của tôi ... Vẫn không có kết nối.
Update2
Tôi đã cài đặt phpStorm IDE cho Mac. Tôi đã học đủ về nó để có được trình gỡ rối đang chạy với thiết lập MAMP và xdebug hiện có của tôi. Tôi nghĩ rằng điều này xác nhận vấn đề là với NetBeans.
Tại thời điểm này, việc làm này dường như là không thể. :(
độ phân giải cuối cùng của tôi cho vấn đề này ... Tôi đã hoàn toàn chuyển sang phpStorm. Sau khi sử dụng nó trong một vài ngày, nó có vẻ là một IDE tốt hơn nhiều (theo ý kiến của tôi). Gỡ lỗi chỉ là "công trình". –
Chính xác ở đây! Tôi đã cố gắng để cài đặt xdebug với netbeans trong 2 tuần, sau đó tôi đã từ bỏ và chuyển sang PHPStorm (trên Windows7 btw). Hoạt động hoàn hảo ra khỏi hộp. Đôi khi nó đáng để trả tiền cho phần mềm tốt. – Sliq