web-dev-qa-db-ja.com

xdebugとnetbeansを使用してphp-cliスクリプトをデバッグしますか?

IDE自体からphp-cliスクリプトデバッグセッションを開始できましたが、シェル/コマンドラインからデバッグセッションを開始する必要があります。これらはかなり複雑なメンテナンスですPHPスクリプトは多くの入力パラメーターを受け取るため、Netbeans内から引数を入力するのは少し面倒です。

以前Zend studioでそれをやったことがあります: https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts Netbeansで動作します。

前もって感謝します。

70
wurdalack

Ubuntu/Netbeansでこれを動作させるには:

  • /etc/php5/Apache2/php.iniファイルから/etc/php5/cli/php.iniにxdebug config行をコピーします
  • デバッグセッションの名前を使用して環境変数を設定します(デバッグを開始すると、netbeansが起動するページのURLのクエリ文字列から取得できます)。コマンドはexport XDEBUG_CONFIG="idekey=netbeans-xdebug"

それは単に、netbeansでデバッグを開始し、コマンドラインでphp myscript.phpを実行する場合です。

注:netbeansを使用してリモートでデバッグする場合は、通常のデバッグではなく、コマンドラインから実行されているファイルでデバッグファイルを使用する必要があります。

109
Andrew Hancox

xdebug.remote_autostart=Onをphp.iniファイルに追加するか、PHPバイナリ呼び出し(-dxdebug.remote_autostart=On))にパラメーターとしてphp -d... script.phpを追加します。

http://xdebug.org/docs/remote を参照してください

42
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. 環境:WindowsでのNetbeans 8.2(Apache + php)
  2. すでにPHPおよびXdebugを使用してコードをデバッグするようにNetBeansを構成していると仮定します( http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration
  3. Netbeansで新しい構成を作成します(「プロジェクトプロパティ」>「実行構成」>「新規…」
  4. 新しい構成セットでは、Webブラウザを開かない(「詳細設定」>「Webブラウザを開かない」)
  5. 作成された新しい構成をアクティブに設定します(ツールバーのドロップダウン)
  6. デバッグ用のブレークポイントを設定
  7. デバッグを開く(CTRL + F5)
  8. ターミナルウィンドウを開きます(「ツール」>「ターミナルで開く」)
  9. ターミナルに入力します:$ export XDEBUG_CONFIG = "idekey = netbeans-xdebug"(値 "netbeans-xdebug"は、「ツール」>「オプション」>「デバッグ」>「セッションID」と一致する必要があります)
  10. ターミナルに入力:$ php.exe -f "C:\ Apache24\htdocs\www.SiteName\ScriptName.php"-"Arg1 = x&Arg2 = y"
  11. デバッグに従ってください…
2
Marco Del Corto

XDebugをIDE(設定が嫌い)に設定したくない場合は、Dephpuggerプロジェクトを使用できます。

https://github.com/tacnoman/dephpugger

Pythonの場合はipdb、Rubyの場合はbyebugのように、ターミナルでデバッガーを実行できます。

0
Renato Cassino

通常はidekeyではないため、DBGP_IDEKEY値も設定してください。 Linuxの例:

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

私のソリューションはこれと同じ問題を抱えていました:

Netbeans>プロジェクトウィンドウ> phpプロジェクトを右クリック>プロパティ>実行構成。新しい構成を作成します。

正しい値を入力します。

  • 「スクリプト」として実行
  • pHPインタープリターを設定する
  • 私の場合、インデックスファイルを変更するのは「cron/index.php」でした。
0
Julian