Xdebug перестал работать, где искать ошибки?

Я установил 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 я дважды прошел все этапы. Что не так с моим конфигом? Спасибо.


person valk    schedule 01.04.2012    source источник
comment
даже после добавления xdebug.remote_log=/tmp/xdebug.log и перезапуска Apache2 и запуска приложения журнал пуст...   -  person valk    schedule 02.04.2012


Ответы (7)


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

ОБНОВИТЬ

После некоторой борьбы я удалил каждую строку, связанную с xdebug, из каждого файла php.ini, который у меня был. И переместил эти строки в /etc/php5/conf.d/xdebug.ini. Перезапустил Apache, а затем PHPStorm, и все заработало. P.S. в середине я попытался установить 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"
person valk    schedule 02.04.2012

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

$ netstat -anp | grep CLOSE_WAIT

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

person Derek Illchuk    schedule 06.05.2014
comment
Для тех, кто не совсем знаком с linux, PID на ubuntu для меня с помощью этой команды был последним столбцом: 3131/apache2 PID = 3131 - person espradley; 21.07.2017

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

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

И перезапустите апач:

sudo /etc/init.d/apache2 restart

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

person Michael Gorham    schedule 13.09.2012

я проверил свой

netstat -anp

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

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

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

person Siddharth Tyagi    schedule 08.01.2016

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

person max4ever    schedule 02.04.2012

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

person Darius.V    schedule 18.02.2019

В моем случае после обновления xdebug до версии 3 я просто поставил/установил конфигурацию php.ini

error_reporting=E_ALL
display_startup_errors=1
display_errors=1

а затем команда php -v показать все предупреждения и ошибки. В моем случае:

Xdebug: [Config] The setting 'xdebug.remote_enable' has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_enable (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
person GetoX    schedule 06.02.2021