преамбула
После многих часов мне не удалось подключить 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)
В конфигурации php NetBeans у меня установлен интерпретатор: /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 НЕ импортировать мои существующие настройки … Все еще нет связи.
Update2
Я установил IDE phpStorm для Mac. Я достаточно узнал об этом, чтобы заставить отладчик работать с существующими настройками MAMP и xdebug. Я думаю, что это подтверждает проблему с NetBeans.
На данный момент получение этой работы кажется невозможным. 🙁
Я спросил то же самое и получил этот неплохой ответ: как отслеживать время выполнения каждой строки / блока строк / методов в PHP? , кроме того, у меня есть этот ответ также в текущем запуске другого вопроса с тем же контентом.
Некоторые дополнительные замечания по этому поводу (материал, который я собрал в других сообщениях SO в своих исследованиях с этой проблемой):
xdebug.idekey=netbeans-xdebug
. Xdebug будет подключаться только в том случае, если в папке проекта есть файл index.php, поэтому убедитесь, что он у вас есть.
он работает для меня сейчас. У меня установлена LAMP. Я изменил в соответствии со всеми ответами сверху, начал apache2, и теперь он летает … я счастлив … некоторое время я решил переключиться на phpstorm, но я пересмотрел … немного изменил … et voila. работает.
Вот что я имею в 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"
На чистой загрузке и установке netbeans, работающих с xampp, xdebug работал, но не останавливался на контрольных точках. Изменен php.ini: xdebug.remote_enable = 1 (от 0) и xdebug работал как ожидалось!