PhpStorm 2019.2ヘルプ

Xdebugの設定

Xdebugのダウンロード

  • PHPバージョンと互換性のあるXdebug拡張(英語)をダウンロードし、インストールガイド(英語)の説明に従ってインストールします。

    AMPパッケージを使用している場合、Xdebug拡張機能が既にインストールされている可能性があります。パッケージに固有の手順を参照してください。

XdebugとPHPインタープリターの統合

  1. エディターでアクティブな php.ini ファイルを開きます:

    1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、 言語 & フレームワークPHPをクリックします。

    2. 表示されるPHPページで、CLI インタープリターフィールドの横にある the Browse button をクリックします。

    3. 開いているCLI インタープリターダイアログでは、構成ファイルの読み取り専用フィールドには、アクティブな php.ini ファイルへのパスが表示されます。エディターで開くをクリックします。

  2. XdebugをブロックするZend デバッガーおよびZend Optimizerツールを無効にするには、php.ini ファイルの次の行を削除またはコメントアウトします。

    zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer>

  3. Xdebugを有効にするには、php.ini ファイルで [xdebug] セクションを見つけるか作成して、次のように更新します。

    [xdebug] zend_extension="<path to xdebug extension>" xdebug.remote_enable=1 xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000)

    Xdebugプロキシ経由でマルチユーザデバッグを有効にするには、xdebug.idekey 設定を見つけて、それにあなたの値を割り当てます。この値はIDEをXdebugプロキシサーバーに登録するために使用されます。

  4. php.ini ファイルを保存して閉じます。

  5. 次のいずれかを実行して、Xdebugのインストールを確認します。

    • コマンドラインで次のコマンドを実行します。

      php --version

      出力は、インストールされた拡張の中でXdebugをリストするはずです:

      Xdebug extension installed
    • 次のコードを含む php ファイルを作成します。

      <?php phpinfo();

      ブラウザでファイルを開きます。 phpinfo 出力には、Xdebugセクションが含まれている必要があります。

      Xdebug support enabled

PhpStormでのXdebugの設定

  1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、言語 & フレームワーク | PHPを選択します。

  2. 選択したPHPインタープリターに関連付けられているXdebugのインストールを確認します。

    1. PHPページで、CLI インタープリターリストから関連するPHPインストールを選択し、フィールドの横にある the Browse button をクリックします。リストにはPhpStormで利用可能なすべてのPHPインストールが表示されます。ローカルPHPインタープリターの設定リモート PHPインタープリターの設定を参照してください。

    2. 開いているCLI インタープリターダイアログには、次の情報が表示されます。
      • 選択したPHPインストールのバージョン。

      • 選択したPHPインストールに関連するデバッグエンジンの名前とバージョン(XdebugまたはZend デバッガー)。デバッガが設定されていない場合、PhpStormは Debugger: Not installedを表示します。

    または、Xdebugチェッカー(英語)を開き、phpinfo()の出力をペーストし、phpinfo()出力を分析するをクリックします。デバッグエンジンの構成の検証でのXdebugのインストールの確認の詳細を参照してください。

  3. Xdebugの動作を定義します。PHPノードにあるデバッグをクリックします。表示されるデバッグページで、Xdebugエリアで次の設定を指定します。

    • デバッグ・ポートフィールドで、ツールがPhpStormと通信するのに使用するポートを指定します。

      これは、php.ini ファイルで指定されているものとまったく同じポート番号でなければなりません。
      xdebug.remote_port = <port_number>
      デフォルトでは、Xdebugはポート 9000をリッスンします。
    • PhpStormにXdebugエンジンからデバッグ・ポートフィールドで指定されたポートを介して入ってくる接続をすべて受け付けるようにするには、外部接続を受け入れる チェックボックスを選択します。

    • パスマッピングが指定されていない場合、最初の行で強制的にブレークするチェックボックスを選択すると、デバッガがサーバーページのプロジェクト内のファイルにマップされていないファイルに到達するとすぐに停止します。デバッガはこのファイルの最初の行で停止し、デバッグツールウィンドウ: 変数は次のエラーメッセージを表示します:サーバー上のファイルのローカルコピーを見つけることができません<サーバー上のファイルへのパス>とリンククリックしてマッピングを設定します。リンクをクリックしてパスマッピングの問題を解決するダイアログを開き、問題のファイルをローカルコピーにマップします。

      このチェックボックスをオフにすると、デバッガはマップされていないファイルに到達して開くときに停止せず、ファイルが処理されただけでエラーメッセージは表示されません。

    • スクリプトがプロジェクトの外にあるときに最初の行で強制終了する チェックボックスを選択すると、現在のプロジェクトの外にあるファイルを開いてすぐにデバッガを最初の行に停止させることができます。このチェックボックスをオフにすると、現在のプロジェクトの外部にあるファイルを開くとデバッガが続行されます。

  4. 外部接続領域で、PhpStormがホストから受信した接続、およびデプロイサーバー構成として登録されていないポートを介して受信した接続をどのように処理するかを指定します。

    • 未登録のサーバー構成による外部接続を無視する : PhpStormがデプロイサーバー構成として登録されていないホストおよびポートから受信した接続を無視するようにするには、このチェックボックスを選択します。このチェックボックスが選択されていると、PhpStormはデプロイサーバー構成を自動的に作成しようとしません。

    • PHP スクリプトの最初の行で中断する : このチェックボックスを選択すると、デバッガとPhpStormとの間の接続が確立されるとすぐに(最初のブレークポイントに達するまで自動的に実行されるのではなく)デバッガが停止します。あるいは、メインメニューから実行 | PHP スクリプトの最初の行で中断するオプションをオンにします。

    • 最大同時接続数 : このスピンボックスを使用して、同時に処理できる外部接続の数を制限します。

オンデマンドモードで使用するためのXdebugの設定

PhpStorm 2016.2以降ではオンデマンドモードがサポートされています。このモードでは、グローバルPHPインストールでXdebugを無効にし、コマンドラインスクリプトのデバッグ時やコードカバレッジレポートが必要な場合にのみオンデマンドで自動的に有効にします。これにより、コマンドラインスクリプト(Composerや単体テストを含む)の実行速度が大幅に向上します。

  1. コマンドラインスクリプトでXdebugを無効にする:

    1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、 言語 & フレームワークにあるPHPを選択します。

    2. PHP 実行可能ファイルリストから適切なPHPインタープリターを選択し、その横にある the Browse button をクリックします。開いたCLI インタープリターダイアログで、設定ファイル:<php.iniへのパス>ファイルの横にあるエディターで開くリンクをクリックします。すべてのダイアログを閉じて、php.ini ファイルが開かれているタブに切り替えます。

    3. php.ini ファイルで、[xdebug] セクションを見つけ、; を前置詞に追加して次の行にコメントします。

      ;[xdebug] ;zend_extension = "<full_path_to_xdebug>"

    4. CLI インタープリターダイアログを開き、PHP 実行可能ファイルフィールドの横にある the Reload button をクリックします。PhpStormは、デバッガがインストールされていないことを通知します。

      ps_interpreters_debugger_not_installed.png

  2. 必要に応じてPhpStormがXdebugをアクティブにできるようにするには、追加領域のデバッガー拡張フィールドにそのパスを指定します。パスを手動で入力するか、the Browse button をクリックして表示されるダイアログで場所を選択します。

Just-In-Timeモードで使用するためのXdebugの設定

PhpStormはジャストインタイム (JIT)モードでのXdebugの使用をサポートしているため、コードに常時接続されていませんが、エラーが発生した場合や例外がスローされた場合にのみPhpStormに接続します。Xdebugの動作モードは、xdebug.remote_mode(英語)の設定で切り替わります。この設定は、デフォルトで reqに設定されています。このモードは、コマンドラインスクリプトのデバッグとWebサーバーのデバッグの両方で使用できます。

コマンドラインスクリプトをデバッグするのか、Webサーバーを使用するのかに応じて、以下のいずれかのシナリオを使用します。

コマンドラインスクリプト

コマンドラインスクリプトをデバッグするには、追加の設定オプションとしてカスタム -dxdebug.remote_mode=jit ディレクティブを指定します。

  1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、言語 & フレームワーク | PHPに移動します。

  2. PHP 実行可能ファイルリストから、関連するPHPインタープリターを選択し、その横にある the Browse button をクリックします。

  3. 開いたCLI インタープリターダイアログで、追加領域の構成オプションフィールドの横にある the Browse button をクリックします。

  4. 表示された構成オプションダイアログで、the Add button をクリックして新しいエントリを追加し、構成ディレクティブ フィールドに -dxdebug.remote_modeフィールドに jit を入力します。

    OKをクリックすると、CLI インタープリターダイアログに戻り、構成オプションフィールドに -dxdebug.remote_mode=jitと表示されます。

Webサーバーのデバッグ

メインメニューから実行 | Web サーバーのデバッグ検証を選択します。

開いているWeb サーバーのデバッグ検証ダイアログで、Webサーバーを選択してデバッガを検証します。

  • ローカルWebサーバーに関連付けられたデバッガーをチェックするには、ローカルWebサーバーまたは共有フォルダーを選択します。

    • 検証スクリプトを作成するパス : このフィールドでは、検証スクリプトが作成されるサーバードキュメント・ルートのフォルダーへの絶対パスを指定します。タイプ所定の位置にのWebサーバーの場合、フォルダーはプロジェクトルートにあります。

      フォルダーはhttpでアクセス可能でなければなりません。

    • 検証スクリプトへのURL : このフィールドに、検証スクリプトを作成するフォルダーのURLアドレスを入力します。プロジェクトルートがhttpでアクセス可能なフォルダーにマップされている場合は、プロジェクトルートまたはその他のフォルダーを指定できます。

  • リモートサーバーに関連付けられているデバッガをチェックするには、リモート Webサーバーを選択します。

    • 検証スクリプトを作成するパス : このフィールドでは、検証スクリプトが作成されるサーバードキュメント・ルートのフォルダーへの絶対パスを指定します。フォルダーはhttpからアクセス可能でなければなりません。

    • デプロイ・サーバー : このフィールドに、ターゲット環境にアクセスするためのタイプローカルサーバーまたはリモート・サーバーのサーバー・アクセス構成を指定します。詳しくはWebサーバーとの同期の構成を参照してください。

      リストから構成を選択するか、デプロイダイアログ参照 the Browse button をクリックします。

検証をクリックして、PhpStormで検証スクリプトを作成し、ターゲットリモート環境にデプロイして実行します。

読み込まれてXdebugに関連付けられていると報告されている php.ini ファイルを開きます。
  • php.ini ファイルで、[xdebug] セクションを見つけ、xdebug.remote_mode の値をデフォルトの req から jitに変更します。

Just-In-TimeデバッグとPhpStormとXdebugによるPHP例外ブレークポイント(英語)も参照してください

Dockerコンテナーで動作するXdebugの設定

Dockerコンテナーで動作するXdebugを設定するには、DockerfileにXdebug固有のパラメータを指定します。

#Set up debugger RUN echo "xdebug.remote_enable=1" >> /etc/php/7.0/apache2/php.ini RUN echo "xdebug.remote_host=your_host_name_or_ip" >> /etc/php/7.0/apache2/php.ini

この例では、Xdebugエクステンションへのパスと、remote_enable および remote_host Xdebugパラメータを提供する /etc/php/7.0/apache2/php.ini を変更します。

xdebug.remote_host の値は、DockerコンテナーからアクセスできるPhpStormが実行されているマシンのIPアドレスに置き換えてください。Windows用Docker(英語)またはMac用Docker(英語)を使用している場合は、xdebug.remote_hosthost.docker.internalに設定することができます。host.docker.internalは自動的にホストの内部アドレスに解決され、コンテナーから簡単に接続できます。

Vagrantインスタンス上で動作するXdebugの設定

VagrantインスタンスでXdebugを実行するように設定するには、Vagrantマシンに接続し、php.ini ファイルでXdebug固有のパラメータを指定します。

[xdebug] zend_extension="<path to xdebug extension>" xdebug.remote_enable=1 xdebug.remote_host=10.0.2.2 xdebug.remote_port=9000

xdebug.remote_host 値は 10.0.2.2であることに注意してください。これは、デフォルトのVagrantセットアップで使用されるゲートウェイであり、インスタンスからPhpStormが実行されているホストに接続できます。

最終更新日: 2019年11月18日

関連ページ:

AMPパッケージのインストール

AMPパッケージはオペレーティングシステム固有のものです。最も一般的なものは次のとおりです。Windows用のXAMPP。使用されているLinuxディストリビューションと互換性のあるLAMPパッケージ。macOS用のMAMP。インストール手順は、使用しているオペレーティングシステムによって異なります...

PHP

WindowsとLinux用のmacOS用PHPプラグインが有効な場合にのみ、このノードとそのすべてのページを使用できます。プラグインはデフォルトで有効になっています。プラグインが無効になっている場合は、プラグインを管理する説明に従ってプラグインページでプラグインを有効にします。このページを使用して...

Xdebugプロキシ経由のマルチユーザデバッグ

デバッグセッションを開始すると、Xdebug拡張機能は、値として指定されたPhpStormが実行されているIPアドレスに接続します。PhpStormはこの接続を受け入れ、Xdebugと通信できます。Xdebugは、単一のIPアドレスへの接続のみをサポートし、セキュリティ上の理由から、ブラウザーを実行...

リモート PHPインタープリターの設定

リモート PHPインタープリターという用語は、リモートホストまたは仮想環境にインストールされたPHPエンジンを意味します。リモート PHPインタープリターという用語は、コンピューターにインストールされているローカルPHPインタープリターの反対語として使用されます。ローカルPHPインタープリターの設定...

デバッグ

このページを使用して、XdebugとZend デバッガーの動作を設定します。事前構成この領域には、デバッガのインストール、デバッガのクッキーを制御してデバッグセッションを開始/停止するを実行するブックマークレットの生成、およびゼロコンフィギュレーションデバッグの起動に関する簡単なガイドラインが示され...

サーバー

WindowsとLinux用のmacOS用このページは、PHPプラグインが有効になっている場合にのみ利用可能です。プラグインはデフォルトで有効になっています。プラグインが無効になっている場合は、プラグインを管理する説明に従ってプラグインページで有効にします。このページでは、デバッグエンジンのHTTP...