Как и многие, я потратил больше часов на отладку подключения моей IDE к XDebug, чем с помощью XDebug для отладки моего программы. Я заставлял его работать неоднократно , но время от времени я получаю обычную «Ожидание подключения» . Мне не удалось определить причину, по которой XDebug работает или не работает. Пользуюсь ubuntu два года; Я не новичок и не гуру. Что я делаю не так? Как мне лучше отладить подключение моей IDE к XDebug?
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_mode = req xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_log = / var / log / xdebug.log xdebug.extended_info = 1 xdebug.idekey = "netbeans-xdebug"
Я не могу объяснить, что вызывает проблему или когда проблема проявляется. Он начинается, когда я пытаюсь отладить свой проект, в результате чего мой выбранный мной браузер разработчика (Chrome) открывает URL-адрес моего проекта с параметром XDEBUG_SESSION_START = netbeans-xdebug
. Это заставляет страницу нормально отображаться в Chrome, в то время как Netbeans сообщает только «Ожидание подключения».
Во-первых, при появлении сообщения «Ожидание подключения» я попытаюсь использовать netstat для поиска порта 9000, который выглядит примерно так: это:
$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
I выключите мою среду IDE и попробуйте использовать два файла, чтобы понять, что происходит: {webroot} /index.php
contains php phpinfo (); ?>
и {webroot} / dbgtest. php
содержит сценарий проверки установки XDebug :
Когда я запускаю XDebug debugclient
и открываю http://127.0.0.1/dbgtest.php?XDEBUG_SESSION_START = mysession
, я обычно получаю обычный вывод , а затем проверяю, что XDebug подключен к сценарию с помощью netstat в другом терминале:
$ netstat -an | grep 9000
tcp 0 0 127.0.0.1:9000 127.0.0.1:34831 ESTABLISHED
tcp 0 0 127.0.0.1:34831 127.0.0.1:9000 ESTABLISHED
Хотя оба из них, похоже, указывают на то, что соединение было сделано, на веб-странице написано "Невозможно привязать", что я не могу объяснить. Я нажимаю Ctrl-c, чтобы выйти из отладочного клиента, и netstat в этот момент проверяет, что порт 9000 не активен. Я запускаю Netbeans, открываю {webroot} /index.php
и включаю отладчик, который открывает http://127.0.0.1/index.php
. Затем отладчик обычно запускается нормально. Я останавливаю отладчик, возвращаюсь к своему проекту, и здесь проблема действительно становится раздражающей: иногда я могу продолжить отладку своего проекта в обычном режиме, а иногда проблема возникает снова, и пока отображается значок «Ожидание подключения», netstat показывает:
$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
tcp6 0 0 127.0.0.1:9000 127.0.0.1:34681 TIME_WAIT
В других случаях я перезагружаю свой компьютер, запускаю терминал и обнаруживаю:
$ netstat -an | grep 9000
unix 3 [ ] STREAM CONNECTED 9000
$ telnet 127.0.0.1 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Я недостаточно знаком с сетью и внутренним устройством Linux, чтобы понять, на что это указывает. Очевидно что-то использует порт 9000. Что это означает? Обратите внимание, несмотря на мои настройки в php.ini:
$ cat /var/log/xdebug.log
cat: /var/log/xdebug.log: No such file or directory