web-dev-qa-db-ja.com

コマンドラインPHPスクリプトのXDebugプロファイラーをトリガーする方法は?

XDebugには、HTTP経由でスクリプトを呼び出すときにGETまたはPOSTパラメーター「XDEBUG_PROFILE」を渡すことでプロファイリングを有効にする構成ディレクティブ「xdebug.profiler_enable_trigger」が用意されています。これは、すべてのスクリプトのプロファイリングを希望せず、常にPHP構成を変更せずにいくつかの特別な場合にのみ便利です。

コマンドラインPHPプログラムで同じ動作を実現する方法はありますか? 「XDEBUG_PROFILE」をコマンドライン引数として渡そうとしましたが、機能しませんでした。

一般に、コマンドラインPHPのプロファイリングはうまく機能しますが、ブラウザーおよびHTTPサーバーと同じコールごとの柔軟性が必要です。

助言がありますか?

186
selfawaresoup

INI設定を渡すには、-dフラグを使用します:php -d xdebug.profiler_enable=On script.php

246
jou

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

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

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

43
Andrew Hancox

リモートウェブサーバー上の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プロジェクト構成のサーバー名を表します

31
oliver nadj

Xdebug Remote Debugging ページで説明したように、「profile_enable = 1」ディレクティブを含めることで、XDEBUG_CONFIG環境変数を介してプロファイリングを有効にすることもできます。

XDEBUG_CONFIG="profiler_enable=1" php ...
14
outis

VM上での開発中にNetbeansで動作させるための類似した、しかし異なるプロセス。

リモート有効フラグ、自動開始フラグ、ideフラグ、およびリモートホストの名前を渡す必要があります。

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_Host=NAME.OF.Host script.php
11
Joshua Dance

クライアントデバッグを処理するシェルスクリプトを作成しました。

スクリプト名:phpdebug

#!/usr/bin/ksh
php -dxdebug.remote_Host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*

このスクリプトを/usr/binに配置し、実行権限を付与しました。

スクリプトは、phpdebugに渡された引数を受け取り、xdebug引数を使用してphpを呼び出し、最後にシェルスクリプトに渡された引数$ *を追加します。

4
user2970583

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
2
Chukky Nze

Jetbrainsのドキュメント

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質問を参照)。

1
adm1n