Отладка скриптов php-cli с помощью xdebug и netbeans? - PullRequest
70 голосов
/ 31 мая 2010

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

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

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

Ответы [ 6 ]

109 голосов
/ 17 августа 2011

Я получил эту работу над 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 в командной строке.

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

42 голосов
/ 31 мая 2010

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

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

12 голосов
/ 27 апреля 2015

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

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

2 голосов
/ 19 апреля 2017

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

  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. Follow debug…
0 голосов
/ 12 марта 2017

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

https://github.com/tacnoman/dephpugger

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

0 голосов
/ 22 декабря 2015

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

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

Введите правильные значения:

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