Netbeans + Xdebug + php не работает

Мой netbeans не работает с контрольными точками, используя xdebug, моя конфигурация выглядит правильно, поэтому я настроил первый раз, когда я запускался, чтобы остановить отладку первый раз, с тех пор никогда не работал, у кого-то была эта проблема? Версия моего netbeans - 6.8, а версия php - 2.5.2.

мой php.ini:

zend_extension_ts = d:\wamp\bin\php\php5.2.5\ext\php_xdebug-2.0.2-5.2.5.dll
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
xdebug.profiler_enable=1

7 ответов

В моем случае эту строку нужно было включить в php.ini:

xdebug.remote_autostart=on

Вот раздел конфигурации для XDebug:

[xdebug]
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
xdebug.remote_autostart=on
xdebug.profiler_enable = on
xdebug.profiler_enable_trigger = on
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:/wamp/tmp"

Контрольный список для xdebug:

  1. Проверьте, что xdebug загружен в phpinfo() и значение времени выполнения соответствует ожидаемой конфигурации.
  2. xdebug.remote_enable является on,
  3. xdebug.extended_info должно быть on для точек останова на работу.
  4. xdebug.remote_port должен быть таким же как иде и неиспользованным.
  5. xdebug.remote_handler является dbgp,
  6. xdebug.idekey должен быть установлен так же, как ключ ide, если xdebug.remote_autostart включен
  7. Иногда это помогает установить xdebug.remote_host IP-адрес интрасети или имя компьютера вместо локального IP 127.0.0.1. Брандмауэр должен разрешить PHP подключаться к этому хосту и порту.
  8. настройка xdebug.remote_log в файл поможет в проверке, что не так. Отключите журнал, когда отладка работает.

Пример конфигурации:

[xdebug]
xdebug.extended_info=on
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=on
xdebug.idekey="netbeans-xdebug"

Контрольный список для NetBeans:

  1. Брандмауэр должен позволять Netbeans прослушивать соединение с настроенным хостом.
  2. Сервис -> Параметры -> PHP -> Отладка, проверьте порт. Также проверьте идентификатор сессии, если включен xdebug.remote_autostart.
  3. Тип проекта должен быть PHP.
  4. Свойства проекта -> Источник, веб-корень должен быть правильным.
  5. Свойства проекта -> Запустить конфигурацию, индексный файл должен быть php (или пустым), чтобы Ctrl+F5 работал.
  6. Свойства проекта -> Конфигурация запуска -> Дополнительно, URL-адрес отладки должен быть "По умолчанию" или "Спрашивать каждый раз".
  7. Свойства проекта -> Конфигурация запуска -> Дополнительно, отображение пути должно быть правильным. (например, пусто, если нет отображений)

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

Ложные инструкции, протестированные на PHP 5.5 и xdebug 2.2:

  1. PHP output_buffering не должен быть выключен. (Но может помочь в отладке)
  2. Модуль OPCache (Zend Cache) может быть загружен.
  3. xdebug.profiler_enable можно включить.

Пожалуйста, отредактируйте этот ответ, если вы нашли что-то новое.

  • Убедитесь, что у вас есть правильная версия Xdebug для вашей версии PHP (включая Thread-safe/non-thread-safe и 64bit/32bit).
  • В некоторых более новых версиях PHP вам нужно использовать zend_extension, а не zend_extension_ts, независимо от того, есть ли у вас версия TS Xdebug.

zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp"xdebug.remote_host = "localhost" xdebug.remote_port="9000" xdebug.remote_mode=req xdebug.trace_output_dir = "C:\xampp\tmp" xdebug.idekey="netbeans-xdebug"

это работает для меня..

Если вы все еще застряли, вы можете попробовать следующее:

  • Загрузите новую версию xdebug с помощью мастера ( http://www.xdebug.org/wizard.php) и, если вы будете следовать инструкциям, возможно, вам повезет.
  • Отключение брандмауэра может помочь.
  • Используйте другой порт в NetBeans, например, в моем случае используйте 9001 в NetBeans и 9000 в Xdebug.
  • Добавить в файл php.ini: xdebug.idekey=netbeans-xdebug,
  • Узнайте, есть ли у вас файл xdebug.ini и добавьте в этот файл строки php.ini, связанные с xdebug.

Всегда проверяйте, что вы перезапускаете службу apache, чтобы проверить все.

(Я отвечаю с ответом, так как форматирование в комментариях не работает должным образом)

То же самое случилось со мной: работал один раз, а затем остановился. Тем не менее, я достиг точки в моей конфигурации, где он начал работать без проблем, и я могу поделиться.

Сначала я переместился на php.ini загрузчик ioncube:

[PHP]
zend_extension=/Applications/MAMP/bin/php5/zend/lib/ioncube_loader_dar_5.2.so

Затем я помещаю эти строки в конфигурацию xdebug:

[xdebug]
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

И прокомментировал все строки о Zend Optimizer

[Zend]
;zend_optimizer.optimization_level=15
;zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.3
;zend_optimizer.version=3.3.3

Я работаю над MAMP, поэтому пути к моим библиотекам относятся к моей папке MAMP.

Удачи

Вот как я смог заставить его работать с множеством установок PHP-FPM homebrew.

Я использовал эту отличную статью для нескольких установок:

https://echo.co/blog/os-x-1010-yosemite-local-development-environment-apache-php-and-mysql-homebrew

В комментариях к этому посту вы увидите рекомендуемый способ установки xdebug, нижняя строка:

brew install php56-xdebug

Вы должны установить xdebug для каждой версии PHP, которую вы установили. Homebrew создаст файл xdebug.ini для каждой установленной вами версии php. У каждого будет свой путь:

/usr/local/etc/php/<version # i.e. "5.6">/conf.d/ext-xdebug.ini

Эта статья устанавливает DNSMasq, который работает на порте xdebug по умолчанию (9000), поэтому вам нужно изменить порт xdebug на что-то другое (9001 работает нормально.)

Отредактируйте вышеупомянутый файл ext-xdebug.ini (или файлы, если вы установили более одной версии php.) Вот что работает для меня:

[xdebug]
zend_extension="/usr/local/opt/php56-xdebug/xdebug.so"

; General config
; Dumps local variables on exception
xdebug.show_local_vars=On
; Dump server variables
xdebug.dump.SERVER=*
; Dump global variables
xdebug.dump_globals=On
xdebug.collect_params=4;

; Tracing
;xdebug.auto_trace=On
;xdebug.trace_output_dir= /opt/local/php_traces/
xdebug.show_mem_delta=On
xdebug.collect_return=On


; Debugging. You might need to specify your host with some additional options
xdebug.remote_enable=1
: from http://devzone.zend.com/1147/debugging-php-applications-with-xdebug/
xdebug.remote_host="localhost"
xdebug.remote_port=9001
xdebug.remote_handler="dbgp"

Первые две строки - это все, что есть в оригинальном доморощенном файле.

Кстати, когда я установил несколько версий PHP, этот файл ext-xdebug.ini был создан только для первой установленной версии PHP. Я просто скопировал этот файл в другие местоположения версий PHP и изменил часть пути php56-xdebug в строке 2, чтобы отразить правильную версию php.

Обратите внимание: "xdebug.remote_port=9001"

Затем в Netbeans (я использую 8.02 Mac OSX10.10.3) я использую следующие настройки. Перейдите в Настройки->PHP-> Отладка

Порт отладчика: 9001

Стоп на первой линии: (не проверено)

Оценка часов и воздушных шаров: (проверено - есть предупреждение, но у меня оно работает нормально.)

Также стоит отметить, что для того, чтобы xdebug появился с помощью phpinfo() (или командной строки php -i), мне нужно перезапустить apache с помощью:

launchctl unload -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

sudo apachectl restart

launchctl load -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

По какой-то причине мои настройки требуют, чтобы я запускал их каждый раз при запуске. Какая-то боль, но я включил ее в команду оболочки, чтобы легко переключаться между версиями.

Еще один совет: часть информации о brew php56 гласит:

OS X 10.8 and newer come with php-fpm pre-installed, to ensure you are using
the brew version you need to make sure /usr/local/sbin is before /usr/sbin
in your PATH:

  PATH="/usr/local/sbin:$PATH"

Пока я не добавил это в свой файл.profile_bash, изменения, внесенные в файл php-fpm.conf каждой версии, не распознавались. Все остальное, казалось, работало, поэтому это сбивало с толку.

Надеюсь, это сэкономит кому-то еще время и неприятности.

В моем случае - хост находится на другом сервере, Net-beans 11 - мне нужно открыть терминал для удаленного хоста

Окно -> Инструменты IDE -> Терминал -> Удаленный терминал

PS Если вы наберете export XDEBUG_CONFIG="idekey=netbeans-xdebug" в этом терминале и начнете сеанс отладки, вы сможете отлаживать скрипты консоли

Другие вопросы по тегам