Перестал работать Xdebug, где искать ошибки? - PullRequest
28 голосов
/ 01 апреля 2012

Я установил Xdebug и все было нормально, пока вдруг он не перестал работать. phpinfo () дает хороший вывод XDebug со всеми переменными.

php -m | grep deb

также дважды выдает XDebug (для Zend и PHP), поэтому снова выглядит просто отлично. В моем php.ini есть такие строки:

zend_extension=/usr/lib/php5/20090626/xdebug.so
;extension=xdebug.so
xdebug.remote_host=localhost
xdebug.remote_enable=on
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=1

И все же, при запуске этого кода с проверкой XDebug (из документации Netbeans) он просто завис. Так что никакая IDE не работает с XDebug.

<?php
$address = '127.0.0.1';
$port = 9001;
$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);

Кроме того, в соответствии с установкой XDebug я прошел два этапа. Что не так с моим конфигом? Благодаря.

Ответы [ 6 ]

13 голосов
/ 02 апреля 2012

В итоге осталось только два решения - переустановить ОС Ubuntu или установить новую ВМ, специально для xdebug, я собираюсь перейти ко второму. Забавно то, что все работало согласно «RTM» (f = freaking). Одна вещь, которую я не мог понять, это как читать журналы для XDebug, чтобы понять, где настоящая проблема.

UPDATE

После некоторых трудностей я удалил каждую строку, связанную с xdebug, из каждого моего php.ini. И переместил эти строки в /etc/php5/conf.d/xdebug.ini. Перезапустил Apache, а затем PHPStorm, и это работает. Постскриптум в середине я попытался установить xdebug с pecl от github и стандартную версию Ubuntu. Я думаю, что тот, который я собрал, в настоящее время работает. И .. журнал также обновляется.

;xdebug configuration
zend_extension = /usr/lib/php5/20090626/xdebug.so
xdebug.remote_host = 127.0.0.1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log="/tmp/xdebug.log"
8 голосов
/ 06 мая 2014

На вашем сервере попробуйте следующую команду:

$ netstat -anp | grep CLOSE_WAIT

Любой: 9000 записей вызовут проблемы с XDebug;рассмотрим kill -9 <pid>.

2 голосов
/ 13 сентября 2012

У меня тоже была эта проблема в Ubuntu после обновления php.Для меня включение html ошибок в php.ini заставило xdebug с Netbeans работать снова ...

sudo vi /etc/php5/apache2/php.ini
display_errors = On
html_errors = On

и перезапустить apache:

sudo /etc/init.d/apache2 restart

http://ubuntuforums.org/showpost.php?p=9592364&postcount=14

1 голос
/ 08 января 2016

Я проверил мой

netstat -anp

Вывод

и обнаружение количества открытых сокетов (в диапазоне портов XDebug) мастер-процессом на моей удаленной машине [под управлением xDebug].

Убийство "мастера" решило проблему для меня.

Мне показалось, что ситуация переполнена портом. Думал, что информация может быть полезна для некоторых.

0 голосов
/ 18 февраля 2019

Проверьте, ставите ли вы точки останова в нужный файл. Найдите первый файл, в который входит скрипт (фронт-контроллер). Например, в Symfony их может быть несколько.

0 голосов
/ 02 апреля 2012

проверьте, что порт не занят, проверьте, что netbeans настроен на прослушивание этого порта (я вижу, у вас есть 9001, обычно по умолчанию 9000), также, когда я отлаживаю с помощью eclipse, мне приходится «завершать и перезапускать» сеанс отладки каждый сейчас и затем, поскольку он перестает работать, никогда не понимал, почему, я подозреваю, что какой-то сеанс отладки с истекшим сроком

...