Проверьте, работает ли 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 ответов:
на самом деле не делая некоторые отладки, я думаю, вы не можете быть некоторых что отладчик работает.
но вы можете быть уверены - я думаю, следует предположить, что если некоторые аспекты 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 где-нибудь на вашем веб-сервере и запустите его. Вот что вы должны увидеть, если все прошло Райт:
если вы видите это, Apache также загрузил модуль, и вы, вероятно, готовы к работе. Теперь давайте посмотрим, будет ли Netbeans отлаживаться правильно. Создайте очень простой скрипт, добавьте некоторые переменные, дайте им значения и установите на них точку останова. Теперь нажмите CTRL+F5, нажмите "step in" на панели отладчика и посмотрите, получите ли вы что-то вроде этого:
не забудьте проверить конфигурацию 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
тогда это должно работать!!!