Преамбула
Спустя много часов мне не удалось заставить NetBeans подключиться к xdebug. Несколько месяцев назад после обновления старой версии MAMP до MAMP PRO отладка работала безупречно. Неделю назад стало шелушиться. Казалось бы, соединение, но не остановилось бы на точках останова. Иногда после перезапуска NetBeans (v7.0.1) и apache они работали на короткое время.
Мне это действительно нужно было исправить, поэтому я установил последнюю версию MAMP PRO (2.1.2). Теперь я постоянно получаю сообщение "Ожидание подключения".
Я провел тестирование
Пока сообщение "Ожидание подключения" отображается вместе с движущейся полосой, я смотрю, слушает ли оно. Это...
# lsof -i -n -P |grep 9001
java 6496 tim 230u IPv6 0xffffff80239d8190 0t0 TCP *:9001 (LISTEN)
В конфигурации NetBeans php у меня установлен интерпретатор: /Applications/MAMP/bin/php/php5.4.10/bin/php
Выполнение следующего:
# /Applications/MAMP/bin/php/php5.4.10/bin/php -i | grep xdebug
сообщает мне, что xdebug работает, как и phpinfo ()
Я (много раз) подтверждал, что номер порта у меня везде одинаковый. Я пробовал порт 9000 и 9001.
Выполнение "хвоста" в xdebug.log с последующим запуском сеанса из браузера без запуска сеанса отладки в NetBeans дает:
I: Connecting to configured address/port: localhost:9001.
E: Could not connect to client. :-(
С сообщением об ожидании подключения и инициированием сеанса из браузера я получаю следующее в журнале:
: 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>
В моем файле php.ini есть следующее:
[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"
Обновить
Я только что заметил, что приведенная выше команда lsof показывает, что NetBeans прослушивает ipV6. Принуждение java (NetBeans) к использованию ipV4 не помогает.
launchctl setenv JAVA_TOOL_OPTIONS -Djava.net.preferIPv4Stack=true
Я нашел сообщение, в котором предлагалось провести тест, чтобы убедиться, что xdebug работает правильно. Создайте файл 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);
?>
Запустите его из командной строки и загрузите любую страницу в своем браузере, указав в конце URL-адреса следующую строку:
?XDEBUG_SESSION_START=nb
Если он выводит что-то вроде «соединение установлено: идентификатор ресурса # 5», xdebug работает правильно. После этого я переустановил Java и NetBeans. Я сказал NetBeans НЕ импортировать мои существующие настройки ... По-прежнему нет соединения.
Обновление2
Я установил IDE phpStorm для Mac. Я узнал об этом достаточно, чтобы запустить отладчик с моей существующей настройкой MAMP и xdebug. Я думаю, это подтверждает, что проблема связана с NetBeans.
На данный момент заставить это работать кажется невозможным. :(