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

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

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

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

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

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

Но вы можете быть абсолютно уверены – я думаю, следует предположить, что если некоторые аспекты 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. Если нет, это не так.

Бег

 php -m -c 

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

NB

Если вы используете Ubuntu, он может не отображаться здесь, потому что вам нужно добавить настройки /etc/php5/apache2/php.ini из /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 

После горького почти 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 содержит текстовые файлы с инструкциями для активации данного модуля. Соглашение о названии – [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 / php5 и убедиться, что папка с именем с номерами является правильной. Настройте имя на то, что вы там видите, и пока вы на нем, проверьте внутри папки, чтобы убедиться, что xdebug.so действительно там. Это должно быть, если вы все сделали правильно.

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

 php5enmod xdebug 

Если все пойдет правильно, PHP создал две ссылки на этот файл: один внутри /etc/php5/apache2/conf.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.so. Все идет нормально.

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

введите описание изображения здесь

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

xdebug в действии

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

Конфигурации отладки в Netbeans

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

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

Попробуйте следующее: должен возвращать «существует» или «не существует»:

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

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

 xdebug://debug-eval 

Таким образом, следующая проверка вернет true, если ваш сеанс находится под 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 INSTEAD. Как только я удалю из /etc/php5/apache2/php.ini и поставлю /etc/php5/apache2/conf.d/xdebug.ini, и перезапустил apache, он сработал!

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

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

sudo service apache2 restart

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

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

 <?php phpinfo(); ?> 

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