205

xdebug.profiler_enable_triggerXDebugは、 HTTP経由でスクリプトを呼び出すときにGETまたはPOSTパラメーター「XDEBUG_PROFILE」を渡すことによってプロファイリングをアクティブ化できるようにする構成ディレクティブを提供します。これは、すべてのスクリプトのプロファイリングを必要とせず、PHP構成を常に変更せずに、いくつかの特殊なケースにのみ使用する場合に便利です。

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

一般に、コマンドラインPHPのプロファイリングは適切に機能しますが、ブラウザーやHTTPサーバーの場合と同じ呼び出しごとの柔軟性が必要です。

4

10 に答える 10

267

-d次のフラグを使用してINI設定を渡すことができますphp -d xdebug.profiler_enable=On script.php

于 2010-02-18T13:12:53.517 に答える
49

私はこれをUbuntu/Netbeansで動作させました:

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

次に、netbeansでデバッグを開始し、コマンドラインで「phpmyscript.php」を実行するだけです。

于 2011-08-17T11:07:55.170 に答える
35

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

于 2013-11-21T11:51:42.307 に答える
25

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

XDEBUG_CONFIG="profiler_enable=1" php ...

使いやすくするために、上記のコマンドラインをエイリアスとして記述できます。

alias xphp='XDEBUG_CONFIG="profiler_enable=1" php'

エイリアスは、~/.bash_aliasesまたは~/.bashrc(システムに応じて)など、シェルの(対話型)起動スクリプトの1つに追加できます。

于 2013-08-28T00:46:51.587 に答える
12

VMでの開発中にNetbeansで動作させるための同様ですが、異なるプロセス。

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

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
于 2014-07-01T16:47:48.447 に答える
4

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

スクリプト名:phpdebug

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

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

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

于 2015-07-16T16:11:05.137 に答える
2

WAMPを使用するPhpStorm7では、すでに機能している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の職人のスクリプトをデバッグするためにも機能しました

php -d xdebug.idekey=PHPSTORM artisan db:seed --force
于 2014-07-25T02:34:20.207 に答える
1

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

于 2019-02-01T05:33:56.253 に答える
1

Xdebug3の場合

これで、単一のスクリプトに対してXdebugを有効にすると、XDEBUG_MODE 環境変数を使用して簡単に実行できます。

XDEBUG_MODE=profile php script_to_be_profiled.php
于 2021-04-13T08:05:00.570 に答える
0

xdebug 3へようこそ!

今です:

xdebug.mode=profile

したがって:

php -d xdebug.mode=profile script.php
于 2021-06-26T09:05:31.653 に答える