web-dev-qa-db-ja.com

xdebugを使用してPHP CLIスクリプトをデバッグするにはどうすればよいですか?

私はこれを完全には理解していません。私が見つけたすべてのドキュメントは、xdebugを使用してApacheで実行されているスクリプトをデバッグする方法をカバーしています。 phpCLIスクリプトをデバッグする必要があります。

したがって、たとえば、XDEBUG_SESSION_START変数を渡してxdebugを開始するにはどうすればよいですか?

私は特にCakePHPシェルをデバッグしようとしています。ですから、誰かがそれについて追加の洞察を持っているなら、私は非常に感謝するでしょう。

ありがとう。

24
Laran Evans

Xdebugのマニュアル には、たとえば(引用)のように、いくつかの注意事項があります。

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

EclipsePDTを使用してPHPスクリプトを開発およびデバッグしている場合、ApacheとCLIの間に大きな違いはありません。構成はまったく同じです。Webを構成する必要はありません。サーバー、またはURLを指定しないでください。代わりに、PHP実行可能ファイルへのパスを指定する必要があります。

関して XDEBUG_SESSION_START変数:ええと、スクリプト全体を「デバッグモード」で起動するので、「デバッグセッション」の概念はありません。


たとえば、これがWindow > Preference > PHP > PHP executablesは今の私には似ていますが、右側では、最初のボタンのEditボタンをクリックすると何が表示されますか?


(出典: Pascal-martin.fr

(出典: Pascal-martin.fr

そしてその debug configurations 窓 :


(出典: Pascal-martin.fr

そしてデバッグを開始します:それはうまくいきます:


(出典: Pascal-martin.fr


お役に立てれば :-)

それ以外の場合、どのような特定の問題が発生しますか?

37
Pascal MARTIN

Bash(または同様のシェル)を使用している場合は、次の小さなスクリプトが役立つ場合があります。

alias drush-debug=drd
function drd {
    export XDEBUG_CONFIG="idekey=cli_session"
    export SERVER_NAME="developer.machine"
    export SERVER_PORT="9000"
    drush "$@"
    unset XDEBUG_CONFIG
    unset SERVER_NAME
    unset SERVER_PORT
};

または以下のコメンテーターによって提案されたように

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'

このように、デバッグするたびにトリガー変数を手動で設定および設定解除する必要はありません。

8
Plamen

次のセクションをphp.iniに配置するだけです

[XDebug]
xdebug.max_nesting_level = 200
xdebug.remote_enable=1
xdebug.remote_port=9000
;xdebug.profiler_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

pHPSTORMをIDEキーに置き換えます

2
Niels