Подтвердить что ты не робот

Проверьте, работает ли xdebug

Без установки текстового редактора или IDE можно проверить, работает ли xdebug, т.е. если он может отлаживать php-код?

Единственная часть xdebug появляется в phpinfo():

Дополнительные .ini файлы проанализированы /etc/php 5/apache2/conf.d/mysql.ini, /etc/php 5/apache2/conf.d/mysqli.ini,/etc/php5/apache2/conf.d/pdo.ini, /etc/php 5/apache2/conf.d/pdo_mysql.ini, /etc/php 5/apache2/conf.d/xdebug.ini

Он не упоминается в phpinfo() где-либо еще.

4b9b3361

Ответ 1

Не выполняя некоторую отладку, я думаю, вы не можете быть уверены, что отладчик работает.

Но вы можете быть очень уверены - я думаю, следует предположить, что если какие-то аспекты xDebug работают, тогда все будет работать.

Учитывая это, вы можете подтвердить, что xDebug установлен и находится на месте, попробовав следующее:

1) phpinfo() - это покажет вам все загружаемые расширения, включая xDebug. Если он есть, то это безопасная ставка, что он работает.

2) Если это недостаточно для вас, вы можете попробовать использовать функцию var_dump(). xDebug изменяет вывод var_dump() для включения дополнительной информации. Если это на месте, то xDebug работает.

3) xDebug изменяет выход ошибки PHP. Если ваша программа выйдет из строя с помощью xDebug, вы получите больше информации о сбое, чем при стандартном выходе сбоя PHP.

4) xDebug также добавляет ряд вспомогательных функций для PHP. Вы можете попробовать любой из них, чтобы увидеть, работает ли он. Например, функция xdebug_get_code_coverage() должна существовать и возвращать массив. Если это так, то устанавливается xDebug. Если нет, это не так.

Ответ 2

Запустить

php -m -c

в вашем терминале, а затем найдите [Zend Modules]. Он должен быть где-то там, если он загружен!

NB

Если вы используете Ubuntu, он может не отображаться здесь, потому что вам нужно добавить настройки xdebug от /etc/php5/apache2/php.ini в /etc/php5/cli/php.ini. Мины

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

Ответ 3

Попробуйте следующее: "Вернуться" или "Не существует":

<?php
echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';

Ответ 4

После горького почти 24-часового запуска, пытающегося заставить xdebug работать с Netbeans 8.0.2, я нашел решение, которое, я надеюсь, будет работать для всех связанных с Ubuntu и Ubuntu стеков.

Проблема номер 1: версии PHP и xdebug должны быть совместимы

Иногда, если вы используете установку Linux и apt-get для установки xdebug, она не даст вам правильную версию xdebug. В моем случае у меня была последняя версия php, но старая версия xdebug. Это должно быть связано с моей текущей версией Xubuntu. Версия программного обеспечения зависит от репозиториев, которые зависят от версии ОС, которую вы используете.

PHP имеет аккуратный менеджер расширений под названием PECL. Следуйте инструкциям здесь, чтобы запустить его. Во-первых, как отметил член в комментариях, вы должны установить пакет разработчиков PHP, чтобы заставить PECL работать:

sudo apt-get install php5-dev

Затем, используя PECL, вы сможете установить последнюю стабильную версию xdebug:

sudo pecl install php5-xdebug

Как только вы это сделаете, правильная версия xdebug будет установлена, но не готова к использованию. После этого вам нужно включить его. Я видел много предложений о том, как это сделать, но факт в том, что PHP нуждается в некоторых модулях, которые будут включены как клиенту, так и серверу, в данном случае Apache. Похоже, что лучше всего использовать встроенный метод включения модулей, называемый php5enmod. Использование описано здесь.

Проблема номер 2: правильно включить модуль

Сначала вам нужно войти в папку /etc/php 5. Там вы найдете 3 папки, apache2, cli и mods_available. Папка mods_available содержит текстовые файлы с инструкциями для активации данного модуля. Соглашение о названии - [module].ini. Посмотрите на несколько из них, посмотрите, как они настроены.

Теперь вам нужно создать свой ini файл внутри папки mods_available. Создайте файл с именем xdebug.ini и внутри файла, вставьте это:

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

Убедитесь, что существует директива [xdebug], как и в примере выше. Обязательно модуль работает. Фактически, просто скопируйте и вставьте весь код, вы станете более счастливым человеком.: D

Примечание: путь zend_extension очень важен. В этом примере это указывает на текущую версию PHP-движка, но сначала вы должны перейти в /usr/lib/php 5 и убедиться, что папка с именем с номерами является правильной. Настройте имя на то, что вы там видите, и пока вы на нем, проверьте внутри папки, чтобы убедиться, что xdebug.so действительно там. Это должно быть, если вы все сделали правильно.

Теперь, когда ваш xdebug.ini создан, пришло время включить модуль. Для этого откройте консоль и введите:

php5enmod xdebug

Если все пошло правильно, PHP создал две ссылки на этот файл: один внутри /etc/php 5/apache2/conf.d и другие внутри /etc/php 5/cli/conf.d

Перезагрузите сервер Apache и введите его на консоль:

php -v

Вы должны получить что-то вроде этого:

PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans

Это означает, что клиент PHP прочитал ваш файл xdebug.ini и загрузил модуль xdebug.so. Пока все хорошо.

Теперь создайте phpinfo script где-нибудь на вашем веб-сервере и запустите его. Это то, что вы должны увидеть, если все пойдет вразрез:

enter image description here

Если вы видите это, Apache также загрузил модуль, и вы, вероятно, готовы к работе. Теперь давайте посмотрим, правильно ли отладится Netbeans. Создайте очень простой script, добавьте некоторые переменные, дайте им значения и установите для них точку останова. Теперь нажмите CTRL + F5, нажмите "step in" на панели отладчика и посмотрите, есть ли у вас что-то вроде этого:

xdebug in action

Не забудьте проверить конфигурацию Netbeans для отладки, в разделе tools/options/php. Он должен выглядеть примерно так:

Debugging configurations on Netbeans

Я надеюсь, что это проливает некоторый свет на эту довольно неясную, запутанную проблему.

С наилучшими пожеланиями!

Ответ 5

вы можете запустить этот небольшой php код

<?php
phpinfo();
?>

Скопируйте всю страницу вывода, вставьте его в ссылку . Затем проанализируйте. Он покажет, установлен ли Xdebug или нет. И он даст инструкции для завершения установки.

Ответ 6

Если вы используете Eclipse, то обратите внимание, что во время работы в режиме XDebug волшебная константа __FILE__ всегда будет оцениваться с помощью:

xdebug://debug-eval

Итак, следующая проверка вернет true, если ваш сеанс находится под XDebug:

$is_xdebug = false !== strpos(__FILE__,'xdebug'); // true while on XDebug

Ответ 7

в вашем вопросе вы упомянули, что ваш phpinfo заявлял, что apache загружал конфигурацию xdebug в /etc/php 5/apache2/conf.d/xdebug.ini Во многих инструкциях в Интернете вы можете заметить, что они просят вас установить xdebug config в php.ini(и это то, что я сделал) ОДНАКО, если для конфигурации установлено значение /etc/php 5/apache2/conf.d/xdebug. ini, тогда вы должны удалить настройки конфигурации [XDebug] из /etc/php 5/apache2/php.ini и поместить его в /etc/php 5/apache2/conf.d/xdebug.ini INSTEAD. Как только я удалил из /etc/php 5/apache2/php.ini и поместил его в /etc/php 5/apache2/conf.d/xdebug.ini и перезапустил apache, он работает!!

Поэтому в вашем /etc/php 5/apache2/conf.d/xdebug.ini поставьте следующее:

[XDebug]
zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/paul/tmp"

xdebug.remote_host="localhost"
xdebug.remote_handler="dbgp";
xdebug.idekey="phpstorm_xdebug"

то удалите это из /etc/php 5/apache2/php.ini, если вы поместите его там.

Тогда do:

sudo service apache2 restart

Тогда он должен работать!!!

Ответ 8

Просто для расширения ответа KsaR и предоставления возможности проверить xdebug из командной строки:

php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"