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


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

единственная часть xdebug приходит в phpinfo () является следующее:

дополнительно .ini файлы разбираются /etc/php5/apache2 / conf.d / mysql.ini, файл /etc/php5 с/apache2 не/конф.d / mysqli.ini, / etc/php5/apache2 / conf.d / pdo.ini, файл /etc/php5 с/apache2 не/конф.d / pdo_mysql.ini, файл /etc/php5 с/apache2 не/конф.d / xdebug.ini

Это не упоминается в phpinfo () в любом другом месте.

7 58

7 ответов:

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

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

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

1) phpinfo() -- Это покажет вам все расширения, которые загружаются, в том числе 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

попробуйте, как показано ниже, должны вернуть "существует" или "не существует":

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

после горького почти 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/php5. Там вы найдете 3 папки, apache2, cli и mods_available. Папка mods_available содержит текстовые файлы с инструкциями по активации данного модуля. Соглашение об именах - [модуль].Ини. Загляните внутрь нескольких из них, посмотрите, как они устроены.

теперь вам придется создать свой 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 / php5 и убедитесь, что папка с именем с номерами является правильной. Настройте имя на то, что вы видите там, и пока вы на нем, проверьте внутри папки, чтобы убедиться, что xdebug.so действительно есть. Так и должно быть, если ты все сделал правильно.

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

php5enmod xdebug

если все прошло правильно, PHP создал две ссылки на этот файл, одну внутри файл /etc/php5 с/apache2 не/конф.d и другие внутри /etc/php5/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.так, модуль. Пока все хорошо.

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

enter image description here

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

xdebug in action

не забудьте проверить конфигурацию Netbeans для отладки, в разделе Инструменты/Параметры/РНР. Это должно выглядеть примерно так:

Debugging configurations on Netbeans

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

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

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

<?php
phpinfo();
?>

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

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

xdebug://debug-eval

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

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

в вашем вопросе вы упомянули, что ваш phpinfo заявлял, что apache загружает конфигурацию xdebug в /etc/php5/apache2/conf.d / xdebug.ini Во многих инструкциях онлайн вы можете заметить, что они просят Вас поставить xdebug config в php.ini (и это то, что я сделал) однако, если конфигурация установлена в /etc/php5/apache2/conf.d / xdebug.ini, затем вы должны удалить настройки конфигурации [XDebug] из /etc/php5/apache2/php.ini и поместите его в /etc/php5/apache2 / conf.d / xdebug.ini ВМЕСТО. После того, как я удалил из /etc/php5/apache2/php.ini и положить в /etc/php5/apache2 / conf.d / xdebug.ini вместо этого и перезапустил apache, это сработало!!

поэтому в вашем /etc/php5/apache2 / conf.d / xdebug.Ини пишем следующее:

[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/php5/apache2 / php.ini, если вы положили его там же.

затем выполните:

перезапуск службы sudo apache2

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