Xdebugの設定

Xdebugは、PHPをデバッグするための拡張機能です。 お好みのIDEを使用できますが、次に、ローカル環境でデバッグするようにXdebugとPhpStormを設定する方法について説明します。

NOTE
Adobe Commerce on cloud インフラストラクチャプロジェクトの設定を変更せずに、ローカルデバッグ用にCloud Docker環境で実行するようにXdebugを設定できます。 「Docker用Xdebugの設定」を参照してください。

Xdebugを有効にするには、Git リポジトリでファイルを設定し、IDEを設定し、ポート転送を設定する必要があります。 magento.app.yaml ファイルで設定を行うことができます。 編集後、すべてのStarter環境とPro統合環境でGitの変更をプッシュして、Xdebugを有効にします。 Xdebugは既にPro ステージングおよび実稼動環境で使用できます。

設定が完了したら、CLI コマンド、web リクエスト、およびコードをデバッグできます。 すべてのクラウドインフラストラクチャ環境は読み取り専用です。 コードをローカル開発環境に複製して、デバッグを実行します。 Pro ステージング環境と実稼動環境については、Xdebugの追加の手順を参照してください。

要件定義

Xdebugを実行して使用するには、環境のSSH URLが必要です。 Cloud ConsoleまたはCloud Onboarding UIを通じて情報を見つけることができます。

Xdebugの設定

Xdebugを設定するには、次の手順に従います。

ブランチの基本を学ぶ

Xdebugを追加するには、開発用ブランチ ​で作業することをお勧めします。Adobeでは、を追加します。

環境でXdebugを有効にする

Xdebugは、すべてのStarter環境およびPro統合環境に対して直接有効にできます。 この設定手順は、Pro実稼動環境およびステージング環境では必要ありません。 プロステージングおよび実稼動用の​ デバッグ ​を参照してください。

プロジェクトでXdebugを有効にするには、.magento.app.yaml ファイルのruntime:extensions セクションにxdebugを追加します。

Xdebug​を有効にするには:

  1. ローカル端末で、テキストエディターで.magento.app.yaml ファイルを開きます。

  2. runtime セクションのextensionsの下にxdebugを追加します。 例:

    code language-yaml
    runtime:
        extensions:
            - redis
            - xsl
            - newrelic
            - sodium
            - xdebug
    
  3. .magento.app.yaml ファイルに変更を保存し、テキストエディターを終了します。

  4. 変更を追加、コミット、およびプッシュして、環境を再デプロイします。

    code language-bash
    git add .magento.app.yaml
    
    code language-bash
    git commit -m "add xdebug"
    
    code language-bash
    git push origin <environment-ID>
    

スターター環境およびPro統合環境にデプロイすると、Xdebugが使用できるようになりました。 IDEの設定を続行します。 PhpStormについては、PhpStormの設定を参照してください。

PhpStorm サーバーの設定

PhpStorm IDEは、Xdebugで正しく動作するように設定する必要があります。

Xdebug​で動作するようにPhpStormを設定するには:

  1. PhpStorm プロジェクトで、設定 パネルを開きます。

    • macOS - PhpStorm > Settings​を選択します。
    • Windows/Linux - ファイル > 設定​を選択します。
  2. 設定 パネルで、PHP セクションを展開し、サーバー​をクリックします。

  3. +​をクリックして、サーバー設定を追加します。 プロジェクト名は上部がグレーで表示されています。

  4. [ オプション ]新しいサーバー設定に対して次の設定を行います。 PHPStorm ドキュメントの「​ デバッグサーバーが構成されていません」を参照してください。

    • 名前 - ホスト名と同じ名前を入力します。 デバッグにCLIを使用するには、この値が​ デバッグ CLI コマンド ​PHP_IDE_CONFIG変数の値と一致する必要があります。
    • ホスト - ホスト名を入力します。
    • Port - 443と入力します。
    • Debugger- Xdebugを選択します。
  5. パスマッピングを使用​を選択します。 ファイル/ディレクトリ ペインに、serverNameのプロジェクトのルートが表示されます。

  6. サーバー​ 列の ​絶対パスで、編集 アイコンをクリックし、環境に基づいて設定を追加します。

    • すべてのスターター環境とPro統合環境のリモートパスは/appです。

    • プロステージング環境および実稼動環境の場合:

      • 実稼動:/app/<project_code>/
      • ステージング:/app/<project_code>_stg/
  7. Xdebug ポートを9000,9003に変更するか、PHP > デバッグ > Xdebug > デバッグポート パネルで9000に制限できます。

  8. 適用」をクリックします。

PHPStorm実行/デバッグ設定の作成

これにより、Adobe Commerce アプリケーションからのリクエストを処理するための正しいデバッグ設定がアプリケーションで有効になります。

  1. PHPStorm アプリケーションを開き、画面の右上にある​ Add Configuration ​をクリックします。

  2. Add new run configuration​をクリックします。

  3. PHP Remote Debug」オプションを選択します。

    • 一意だが認識可能な名前を入力してください。
    • 「Filter debug connection by IDE key**」チェックボックスをオンにします。
    • 前のセクション ​で作成したサーバーを選択します。 まだ作成していない場合は、今すぐ作成できますが、セットアップガイドのその部分を参照してください。
    • IDE key(session id) テキストフィールドに、PHPSTORMを大文字で入力します。 設定の他の部分でも使用するため、同じことを維持することが重要です。 別の文字列を選択した場合は、設定および設定プロセスの別の場所で使用することを忘れないでください。
  4. Apply > OK​をクリックします。

ポート転送の設定

サーバーからのXDEBUG接続をローカルシステムにマッピングします。 あらゆる種類のデバッグを行うには、Adobe Commerce on cloud infrastructure サーバーからローカルマシンにポート 9000を転送する必要があります。 次のいずれかのセクションを参照してください。

MacまたはUNIXでのポート転送®

MacまたはUNIX®環境でポート転送を設定するには:

  1. ターミナルを開きます。

  2. SSHを使用して接続を確立します。

    code language-bash
    ssh -R 9000:localhost:9000 <ssh url>
    

    ソケットが転送中のポートに接続されるたびにターミナルに表示されるように、-v (詳細)オプションを使用します。

    「接続できません」または「リモートでポートをリッスンできませんでした」というエラーが表示された場合は、ポート 9000を占有しているサーバーに別のアクティブなSSH セッションが残っている可能性があります。 その接続が使用されていない場合は、終了できます。

接続をトラブルシューティングするには:

  1. SSHを使用して、リモート統合環境、ステージング環境または実稼動環境にログインします。

  2. SSH セッションのリストを表示:who

  3. ユーザー別の既存のSSH セッションを表示します。 自分以外のユーザーに影響を与えないように注意してください。

    • 統合:ユーザー名はdd2q5ct7mhgusと似ています
    • ステージング:ユーザー名はdd2q5ct7mhgus_stgに似ています
    • 実稼動:ユーザー名はdd2q5ct7mhgusに似ています
  4. 自分より古いユーザーセッションの場合は、pts/0などの擬似端末(PTS)値を見つけます。

  5. PTS値に対応するプロセス ID (PID)をキルします。

    code language-bash
    ps aux | grep ssh
    kill <PID>
    

    回答サンプル:

    code language-none
    dd2q5ct7mhgus        5504  0.0  0.0  82612  3664 ?      S    18:45   0:00 sshd: dd2q5ct7mhgus@pts/0
    

    接続を終了するには、プロセス ID (PID)でkill コマンドを入力します。

    code language-bash
    kill 3664
    

Windowsでのポート転送

Windowsでポート転送(SSH トンネリング)を設定するには、Windows ターミナル アプリケーションを設定する必要があります。 この例では、Puttyを使用してSSH トンネルを作成する手順を説明します。 Cygwinなどの他のアプリケーションを使用できます。 他のアプリケーションについて詳しくは、それらのアプリケーションに付属のベンダードキュメントを参照してください。

Putty​を使用してWindowsでSSH トンネルを設定するには:

  1. まだダウンロードしていない場合は、Puttyをダウンロードしてください。

  2. Puttyを開始します。

  3. カテゴリ ウィンドウで、セッション​をクリックします。

  4. 次の情報を入力します。

    • ホスト名(またはIP アドレス) フィールド:Cloud サーバーのSSH URLを入力します
    • Port フィールド:22と入力します

    Puttyを設定

  5. カテゴリ ペインで、接続 > SSH > トンネル​をクリックします。

  6. 次の情報を入力します。

    • Source port フィールド:9000と入力します
    • 宛先 フィールド:127.0.0.1:9000と入力します
    • リモート」をクリック
  7. 追加」をクリックします。

    ​ パティでSSH トンネルを作成

  8. カテゴリー ペインで、セッション​をクリックします。

  9. 保存済みセッション」フィールドに、このSSH トンネルの名前を入力します。

  10. 保存​をクリックします。

    SSH トンネルを保存

  11. SSH トンネルをテストするには、Load​をクリックし、Open​をクリックします。

    「接続できません」というエラーが表示された場合は、次の点を確認します。

    • Puttyの設定はすべて正しい
    • クラウド インフラストラクチャ上のプライベート Adobe CommerceのSSH キーが配置されているコンピューターでPuttyを実行しています

Xdebug環境へのSSH アクセス

デバッグを開始したり、設定を実行したりするには、環境にアクセスするためのSSH コマンドが必要です。 この情報は、Cloud Consoleとプロジェクト スプレッドシートから入手できます。

スターター環境とPro統合環境では、次のmagento-cloud CLI コマンドを使用して、これらの環境にSSHで接続できます。

magento-cloud environment:ssh --pipe -e <environment-ID>

Xdebugを使用するには、次のように環境にSSHで接続します。

ssh -R <xdebug listen port>:<host>:<xdebug listen port> <SSH-URL>

以下に例を挙げます。

ssh -R 9000:localhost:9000 pwga8A0bhuk7o-mybranch@ssh.us.magentosite.cloud

Pro ステージングおよび実稼動用のデバッグ

NOTE
Pro ステージングおよび実稼動環境では、Xdebugは常に使用できます。これらの環境にはXdebugの特別な設定が設定されているからです。 通常のweb リクエストはすべて、Xdebugを持たない専用のPHP プロセスにルーティングされます。 したがって、これらの要求は正常に処理され、Xdebugが読み込まれたときにパフォーマンスの低下の影響を受けません。 Xdebug キーを持つweb リクエストが送信されると、Xdebugが読み込まれた別のPHP プロセスにルーティングされます。

プロプランのステージング環境と実稼動環境でXdebugを使用するには、アクセス権を持つユーザーのみがアクセスできる個別のSSH トンネルとweb セッションを作成します。 この使用方法は、一般的なアクセスとは異なり、すべてのユーザーではなく、ユーザーにアクセス権を提供するだけです。

次のものが必要です。

  • 環境にアクセスするためのSSH コマンド。 この情報は、Cloud ConsoleまたはCloud Onboarding UIから入手できます。

  • ステージング環境とPro環境の設定時に設定されたxdebug_key値。

    xdebug_keyは、SSHを使用してプライマリノードにログインし、次を実行することで見つけることができます。

    code language-bash
    cat /etc/platform/*/nginx.conf | grep xdebug.sock | head -n1
    

ステージング環境または実稼動環境へのSSH トンネルを設定するには:

  1. ターミナルを開きます。

  2. クラスターの各web ノードのすべてのSSH セッションをクリーンアップします。

    code language-bash
    ssh USERNAME@CLUSTER.ent.magento.cloud 'rm /run/platform/USERNAME/xdebug.sock'
    
  3. クラスターの各web ノードに対して、Xdebug用のSSH トンネルを設定します。

    code language-bash
    ssh -R /run/platform/USERNAME/xdebug.sock:localhost:9000 -N USERNAME@CLUSTER.ent.magento.cloud
    
NOTE
USERNAME@CLUSTER.ent.magento.cloudの正しい値を取得するには:
  • 方法1: magento-cloud CLI: magento-cloud ssh --all
  • 方法2: Commerce コンソール:https://CONSOLE-URL/ENVIRONMENTで、「SSH v」ドロップダウンをクリックします

環境URL​を使用してデバッグを開始するには:

これは、使用される設定のデモと、リモートデバッグセッションを開始するためのGET パラメーターのデモです。

  1. リモートデバッグを有効にします。ブラウザーでサイトにアクセスし、KEYxdebug_keyの値であるURLに次を追加します。

    code language-http
    ?XDEBUG_SESSION_START=KEY
    

    この手順では、ブラウザーのリクエストをトリガー Xdebugに送信するCookieを設定します。

  2. Xdebugでデバッグを完了してください。

  3. セッションを終了する準備ができたら、次のコマンドを使用してCookieを削除し、KEYxdebug_keyの値であるブラウザーを介してデバッグを終了します。

    code language-http
    ?XDEBUG_SESSION_STOP=KEY
    
    note
    NOTE
    POST要求によって渡されたXDEBUG_SESSION_STARTはサポートされていません。

Debug CLI コマンド

この節では、CLI コマンドのデバッグについて説明します。

CLI コマンドをデバッグするには:

  1. CLI コマンドを使用して、デバッグするサーバーにSSHで接続します。

  2. 次の環境変数を作成します。

    code language-bash
    export XDEBUG_CONFIG='PHPSTORM'
    
    code language-bash
    export PHP_IDE_CONFIG="serverName=<name of the server that is configured in PHPSTORM>"
    

    これらの変数は、SSH セッションの終了時に削除されます。

  3. デバッグを開始

    スターター環境とPro統合環境では、CLI コマンドを実行してデバッグします。
    ランタイムオプションを追加できます。例:

    code language-bash
    php -d xdebug.profiler_enable=On -d xdebug.max_nesting_level=9999 bin/magento cache:clean
    

    Pro ステージング環境および実稼動環境では、CLI コマンドをデバッグする際に、Xdebug PHP設定ファイルへのパスを指定する必要があります。例:

    code language-bash
    php -c /etc/platform/USERNAME/php.xdebug.ini bin/magento cache:clean
    

Web リクエストのデバッグ

次の手順は、web リクエストのデバッグに役立ちます。

  1. 拡張機能 メニューで、デバッグ​をクリックして有効にします。

  2. 右クリックしてオプションメニューを選択し、IDE キーを​ PHPSTORM ​に設定します。

  3. ブラウザーにXdebug クライアントをインストールします。 設定して有効にします。

例:Chromeの設定

この節では、Xdebug Helper拡張機能を使用してChromeでXdebugを使用する方法について説明します。 他のブラウザーのXdebug ツールについて詳しくは、ブラウザーのドキュメントを参照してください。

ChromeでXdebug Helperを使用するには:

  1. クラウド サーバーにSSH トンネル ​を作成します。

  2. Chrome ストアからXdebug Helper拡張機能をインストールします。

  3. 次の図に示すように、Chromeで拡張機能を有効にします。

    ChromeでXdebug拡張機能を有効にする

  4. Chromeで、Chrome ツールバーの緑色のヘルパーアイコンを右クリックします。

  5. ポップアップメニューから、オプション​をクリックします。

  6. IDE キー リストから、PhpStorm​をクリックします。

  7. 保存​をクリックします。

    Xdebug ヘルパーオプション ​

  8. PhpStorm プロジェクトを開きます。

  9. 上部のナビゲーションバーで、リスニングを開始 アイコンをクリックします。

    ナビゲーションバーが表示されない場合は、表示/ナビゲーションバー​をクリックします。

  10. PhpStorm ナビゲーションパネルで、テストするPHP ファイルをダブルクリックします。

ローカルコードのデバッグ

読み取り専用環境のため、デバッグを実行するには、環境または特定のGit ブランチからローカル ワークステーションにコードをプルする必要があります。

選ぶ方法はあなた次第です。 次のオプションがあります。

  • Gitからコードをチェックアウトして、composer installを実行します

    このメソッドは、composer.jsonさんがアクセス権のないプライベートリポジトリ内のパッケージを参照しない限り機能します。 このメソッドは、Adobe Commerce コードベース全体を取得します。

  • vendorapppublib、およびsetup ディレクトリをコピーします

    この方法では、テスト可能なすべてのコードが得られます。 静的なアセットの数によっては、大量のファイルを含む転送が長くなる可能性があります。

  • vendor ディレクトリのみをコピー

    ほとんどのコードはvendor ディレクトリにあるので、このメソッドはコードベース全体をテストしているわけではありませんが、適切なテストを行う可能性が高くなります。

ファイルを圧縮してローカル コンピューターにコピーするには:

  1. SSHを使用してリモート環境にログインします。

  2. ファイルを圧縮します。

    code language-bash
    tar -czf /tmp/<file-name>.tgz <directory list>
    

    例えば、vendor ディレクトリのみを圧縮するには、次の手順を実行します。

    code language-bash
    tar -czf /tmp/vendor.tgz vendor
    
  3. ローカル環境で、PhpStormを使用してファイルを圧縮します。

    code language-bash
    cd <phpstorm project root dir>
    
    code language-bash
    rsync <SSH-URL>:/tmp/<file-name>.tgz .
    
    code language-bash
    tar xzf <file-name>.tgz
    
recommendation-more-help
commerce-on-cloud-help-cloud-guide