XDebugには、HTTP経由でスクリプトを呼び出すときにGETまたはPOSTパラメーター「XDEBUG_PROFILE」を渡すことでプロファイリングを有効にする構成ディレクティブ「xdebug.profiler_enable_trigger」が用意されています。これは、すべてのスクリプトのプロファイリングを希望せず、常にPHP構成を変更せずにいくつかの特別な場合にのみ便利です。
コマンドラインPHPプログラムで同じ動作を実現する方法はありますか? 「XDEBUG_PROFILE」をコマンドライン引数として渡そうとしましたが、機能しませんでした。
一般に、コマンドラインPHPのプロファイリングはうまく機能しますが、ブラウザーおよびHTTPサーバーと同じコールごとの柔軟性が必要です。
助言がありますか?
INI設定を渡すには、-d
フラグを使用します:php -d xdebug.profiler_enable=On script.php
。
Ubuntu/Netbeansでこれを動作させるには:
それは単に、netbeansでデバッグを開始し、コマンドラインで「php myscript.php」を実行する場合です。
リモートウェブサーバー上のPhpStormで私はこのコマンドを使用します:
XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_Host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php
ここで、server_name
はPhpStormプロジェクト構成のサーバー名を表します
Xdebug Remote Debugging ページで説明したように、「profile_enable = 1」ディレクティブを含めることで、XDEBUG_CONFIG
環境変数を介してプロファイリングを有効にすることもできます。
XDEBUG_CONFIG="profiler_enable=1" php ...
VM上での開発中にNetbeansで動作させるための類似した、しかし異なるプロセス。
リモート有効フラグ、自動開始フラグ、ideフラグ、およびリモートホストの名前を渡す必要があります。
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_Host=NAME.OF.Host script.php
クライアントデバッグを処理するシェルスクリプトを作成しました。
スクリプト名:phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_Host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
このスクリプトを/usr/bin
に配置し、実行権限を付与しました。
スクリプトは、phpdebugに渡された引数を受け取り、xdebug引数を使用してphpを呼び出し、最後にシェルスクリプトに渡された引数$ *を追加します。
WAMPを使用したPhpStorm 7では、すでに動作しているxdebug設定をC:\ wamp\bin\Apache\apache2.2.22\bin\php.iniからC:\ wamp\bin\php \のxdebugセクションにコピーすることで動作するようになりました。 phpX.YZ\php.ini。次に、次のようにスクリプトを実行しました。
php -d xdebug.idekey=PHPSTORM script.php
これはlaravel artisanスクリプトのデバッグでも機能しました
php -d xdebug.idekey=PHPSTORM artisan db:seed --force
PHPコマンドラインスイッチを使用してデバッグでスクリプトを開始するにはXDebugにIDEに接続するように指示する環境変数を設定します。
Windows/MacOS/Linux
export XDEBUG_CONFIG="idekey=123"
ここで、idekeyにはランダムな値が必要です。
次のコマンドラインオプションを使用してPHPを起動します。
php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_Host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php
Vagrantで127.0.0.1の代わりに10.0.2.2を使用できます(関連するSO質問を参照)。