Отладка скриптов php-cli с помощью xdebug и netbeans?

Мне удалось запустить сеанс отладки сценария php-cli из самой IDE, но мне нужно запустить сеанс отладки из командной строки или оболочки. Это довольно сложные PHP-сценарии обслуживания, которые принимают много входных параметров, поэтому ввод аргументов изнутри Netbeans немного обременителен.

Я делал это раньше с Zend studio: https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts, но теперь мне нужно, чтобы он работал с Netbeans.

Заранее спасибо.

Ответ 1

Я работал над Ubuntu/Netbeans:

  • копирование строк конфигурации xdebug из файла /etc/php 5/apache2/php.ini в/etc/php5/cli/php.ini
  • установка переменной среды с именем сеанса отладки (вы можете получить это из строки запроса в URL-адрес страницы, когда netbeans запускается при запуске отладки), поэтому команда: export XDEBUG_CONFIG="idekey=netbeans-xdebug"

Тогда это просто случай начала отладки в netbeans и выполнения php myscript.php в командной строке.

Примечание: Если вы хотите отлаживать удаленно с помощью netbeans, вам нужно использовать Debug File в файле, который запускается из командной строки, а не в обычном Debug.

Ответ 2

Добавьте xdebug.remote_autostart=On в файл php.ini или добавьте -dxdebug.remote_autostart=On в качестве параметра для двоичного вызова PHP (php -d... script.php).

См. http://xdebug.org/docs/remote

Ответ 3

Я собираюсь собрать все, что работает для меня.

file:
/etc/php5/cli/php.ini

zend_extension="/usr/lib/php5/20121212/xdebug.so" -> xdebug bin path
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_port=9000 -> same port configured in netbeans debugging tab
xdebug.idekey="netbeans-xdebug" -> same ide configured in netbeans debuggin tab
xdebug.remote_autostart=1

то без какого-либо другого параметра

PHP скрипт.php

Ответ 4

У меня была та же проблема, мое решение было следующим:

  • Среда: Netbeans 8.2 под окнами (apache + php)
  • Предполагая, что у вас уже настроены PHP и NetBeans для отладки код с помощью Xdebug (http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration)
  • В netbeans создайте новую конфигурацию ( "Свойства проекта" > "Запустить конфигурацию" > "Создать..."
  • В новом наборе настроек "Не открывать веб-браузер" ( "Дополнительно" > "Не открывать веб-браузер" )
  • Установить активную новую созданную конфигурацию (выпадающий на панели инструментов)
  • Установить точку останова для отладки
  • Отладка отладки (CTRL + F5)
  • Открыть окно терминала ( "Инструменты" > "Открыть в терминале" )
  • Введите терминал: $export XDEBUG_CONFIG = "idekey = netbeans-xdebug" (значение "netbeans-xdebug" должно совпадать с "Сервис" > "Параметры" > "Отладка" > "Идентификатор сеанса" )
  • Введите терминал: $php.exe -f "C:\Apache24\htdocs\www.SiteName\ScriptName.php" - "Arg1 = x & Arg2 = y"
  • Следуйте за отладкой...

Ответ 5

У меня была та же проблема, что и мое решение:

В Netbeans > окне проектa > щелкните правой кнопкой мыши по объекту php project > properties > Run configuration. Создайте новую конфигурацию.

Заполните правильные значения:

  • Запустить как "script"
  • set php interpreter
  • изменить индексный файл в моем случае это был "cron/index.php".

Ответ 6

Вы можете использовать проект Dephpugger, если вы не хотите настраивать xDebug для вашей IDE (я ненавижу конфигурации).

https://github.com/tacnoman/dephpugger

Вы можете запустить отладчик в терминале, например ipdb для Python и byebug для Ruby.

Ответ 7

Убедитесь, что вы также установили значение DBGP_IDEKEY, потому что обычно это не idekey. Например, в Linux:

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"