Ожидание подключения (netbeans-xdebug) MAMP OS X

Преамбула

Спустя много часов мне не удалось заставить 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.

На данный момент заставить это работать кажется невозможным. :(


person Tim Duncklee    schedule 01.03.2013    source источник
comment
Мое окончательное решение этой проблемы ... Я полностью перешел на phpStorm. После использования в течение нескольких дней кажется, что IDE намного лучше (на мой взгляд). Отладка просто работает.   -  person Tim Duncklee    schedule 04.03.2013
comment
Точно так же и здесь! Я пытался установить xdebug с netbeans в течение 2 недель, затем я сдался и переключился на PHPStorm (кстати, в Windows7). Прекрасно работает "из коробки". Иногда за хорошее программное обеспечение стоит заплатить.   -  person Sliq    schedule 18.07.2013


Ответы (4)


Я спросил то же самое и получил довольно хороший ответ: Как отслеживать время выполнения каждой строки / блока строк / методов в PHP?, кроме того, у меня есть этот ответ также на текущий вопрос с тем же содержанием.

Некоторые дополнительные примечания по этому поводу (материал, который я собрал в других сообщениях SO в моем собственном исследовании по этой проблеме):

  1. Порт также может быть 9001 (кажется, работает для некоторых людей, а 9000 - нет).
  2. Переход на PHPStorm IDE - реальная альтернатива, которая решает эту проблему (поскольку PHPStorm уже включает отлично работающий xdebug).
  3. Загрузите новую версию xdebug через мастер (http://xdebug.org/wizard.php) и если вы будете следовать инструкциям, возможно, вам повезет.
  4. Может помочь отключение брандмауэра.
  5. Добавьте в php.ini: xdebug.idekey=netbeans-xdebug.
  6. Узнайте, есть ли у вас файл xdebug.ini, и добавьте в него строки php.ini, связанные с xdebug.
  7. вы должны отменить комментирование строки zend_extension (т.е. удалить ; в ее начале), чтобы Xdebug фактически загрузился.
  8. убедитесь, что Xdebug загружен, вызывая phpinfo () из файла PHP (на всякий случай).
person Sliq    schedule 22.07.2013
comment
Спасибо. Добавление xdebug.idekey=netbeans-xdebug в php.ini сделало для меня волшебство. - person Saurabh Hooda; 12.05.2014
comment
Добавление xdebug.idekey = netbeans-xdebug также устранило мою проблему с NetBeans. И я также установил PHPStorm, но, к сожалению, в нем не было предварительно установленного XDebug, и для этого потребовалось много дополнительных шагов, и все же он не мог выполнить отладку. Хотя это отличная IDE, но я ожидал, что почти за 150 долларов в год она будет работать прямо из коробки или с минимальной настройкой, что было не так. Я пока останусь с NetBeans. - person zeeshan; 26.11.2016

Xdebug будет подключаться только в том случае, если в папке вашего проекта есть файл index.php, поэтому убедитесь, что он у вас есть.

person dagarre    schedule 14.09.2013

у меня это работает сейчас. У меня установлена ​​ЛАМПА. Я изменил в соответствии со всеми ответами выше, запустил apache2, и теперь он летает ... я счастлив ... какое-то время я думал переключиться на phpstorm, но я передумал ... подправить еще немного ... и вуаля. работает.

Вот что у меня в 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"
person user3166531    schedule 06.01.2014

При чистой загрузке и установке netbeans, работающих на xampp, xdebug работал, за исключением того, что не останавливался на точках останова. Изменен php.ini на: xdebug.remote_enable = 1 (с 0), и xdebug работал, как ожидалось!

person RRetzko    schedule 04.09.2013