it-swarm.com.ru

Отладка скриптов 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.

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

68
wurdalack

Я получил эту работу на Ubuntu/Netbeans:

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

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

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

108
Andrew Hancox

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

Смотрите http://xdebug.org/docs/remote

41
johannes

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

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 script.php

12
Darwin

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

  1. Среда: Netbeans 8.2 под Windows (Apache + php)
  2. Предполагая, что у вас уже есть PHP и NetBeans настроены для отладки кода С использованием Xdebug ( http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration )
  3. В NetBeans создайте новую конфигурацию («Свойства проекта»> «Запустить конфигурацию»> «Создать…»).
  4. В новом наборе настроек не открывать веб-браузер («Дополнительно»> «Не открывать веб-браузер»)
  5. Активировать новую созданную конфигурацию (выпадающий на панели инструментов)
  6. Установить точку останова для отладки
  7. Открытая отладка (CTRL + F5)
  8. Открыть окно терминала («Инструменты»> «Открыть в терминале»)
  9. Введите в терминале: $ export XDEBUG_CONFIG = "idekey = netbeans-xdebug" (значение "netbeans-xdebug" должно совпадать с "Tools"> "Options"> "Debugging"> "Session ID")
  10. Введите в терминале: $ php.exe -f "C:\Apache24\htdocs\www.SiteName\ScriptName.php" - "Arg1 = x & Arg2 = y"
  11. Следуйте отладке ...
2
Marco Del Corto

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

https://github.com/tacnoman/dephpugger

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

0
Renato Cassino

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

В Netbeans> окно проекта> щелкните правой кнопкой мыши проект php> свойства> Запустить настройку. Создать новую конфигурацию. 

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

  • Запускать как «скрипт» 
  • установить интерпретатор php
  • изменить файл индекса в моем случае это был "cron/index.php".
0
Julian