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