Xdebug の設定

Xdebug は、PHP をデバッグするための拡張モジュールです。 任意の IDE を使用できますが、次に設定方法を説明します Xdebug および PhpStorm ローカル環境でデバッグする場合は、をクリックします。

NOTE
以下を設定できます Xdebug を Cloud Docker 環境で実行し、クラウドインフラストラクチャプロジェクト設定のAdobe Commerceを変更せずにローカルデバッグを行う。 参照: Docker 用の Xdebug の設定.

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

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

要件

を実行して使用するには Xdebug。環境の SSH URL が必要です。 次の方法で情報を特定できます Cloud Console または Cloud Onboarding UI.

Xdebug の設定

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

ブランチの基本を学ぶ

追加 Xdebug、Adobeでは、で作業することをお勧めします 開発部門.

お使いの環境で Xdebug を有効にする

を有効にできます Xdebug すべてのスターター環境および Pro 統合環境に直接適用できます。 この設定手順は、実稼動環境とステージング環境には必要ありません。 参照: ステージング環境および実稼動環境用のデバッグ.

を有効にする Xdebug プロジェクトに次を追加します xdebugruntime:extensions の節 .magento.app.yaml ファイル。

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 -A
    
    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 > 環境設定.
    • Windows/Linux – 選択 ファイル > 設定.
  2. が含まれる 設定 パネルで、を展開して見つけます。 言語とフレームワーク > PHP > サーバー セクション。

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

  4. [オプション] 新しいサーバー設定に次の設定を行います。 参照: デバッグサーバーが設定されていません が含まれる PHPStorm ドキュメント。

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

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

    • すべてのスターター環境および Pro 統合環境の場合、リモートパスは /app.

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

      • 実稼動: /app/<project_code>/
      • ステージング: /app/<project_code>_stg/
  7. 変更: Xdebug の 9000 への移植 言語とフレームワーク > PHP > デバッグ > Xdebug > デバッグポート パネル。

  8. クリック 適用.

ポート転送の設定

をマッピングします XDEBUG サーバーからローカルシステムへの接続。 あらゆる種類のデバッグを行うには、Cloud Infrastructure Server 上のAdobe Commerceからローカルマシンにポート 9000 を転送する必要があります。 以下のセクションの 1 つを参照してください。

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

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

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

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

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

    の使用 -v (verbose) オプションを指定すると、転送されるポートにソケットが接続されるたびに、端末に表示されます。

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

接続のトラブルシューティングをおこなうには:

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

  2. SSH セッションのリストを表示します。 who

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

    • 統合:ユーザー名は次に似ています dd2q5ct7mhgus
    • ステージング:ユーザー名は次に似ています dd2q5ct7mhgus_stg
    • 実稼働:ユーザー名は次に似ています dd2q5ct7mhgus
  4. ユーザーセッションが以前の場合、次のような擬似端末(PTS)値を見つけます。 pts/0.

  5. PTS 値に対応するプロセス ID (PID)を強制終了します。

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

    応答の例:

    code language-terminal
    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 ターミナル アプリケーションを構成する必要があります。 この例では、を使用して SSH トンネルを作成する手順を示します パテ. Cygwin などの他のアプリケーションを使用できます。 その他のアプリケーションについて詳しくは、それらのアプリケーションに付属するベンダードキュメントを参照してください。

Putty を使用して Windows に SSH トンネルをセットアップするには:

  1. まだ行っていない場合は、次をダウンロードします パテ.

  2. パテを起動します。

  3. カテゴリ ウィンドウで、 Session.

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

    • ホスト名(または IP アドレス) フィールド: SSH URL クラウドサーバーの場合
    • ポート フィールド:Enter 22

    パテの設定

  5. が含まれる カテゴリ ウィンドウで、をクリック 接続 > SSH > トンネル.

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

    • ソースポート フィールド:Enter 9000
    • 宛先 フィールド:Enter 127.0.0.1:9000
    • クリック リモート
  7. クリック 追加.

    Putty で SSH トンネルを作成する

  8. が含まれる カテゴリ ウィンドウで、をクリック Session.

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

  10. クリック 保存.

    SSH トンネルを保存する

  11. SSH トンネルをテストするには、 ロード ​を選択し、 開く.

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

    • Putty の設定はすべて正しい
    • クラウドインフラストラクチャ上のプライベートAdobe Commerceの SSH キーがあるマシンで Putty を実行しています

Xdebug 環境への SSH アクセス

デバッグの開始やセットアップの実行などを行うには、環境にアクセスするための SSH コマンドが必要です。 この情報は、 Cloud Console とプロジェクトのスプレッドシートを使用します。

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

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

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

NOTE
ステージング環境および実稼動環境では、 Xdebug これらの環境には特別な設定があるので、は常に使用できます。 Xdebug. 通常の Web リクエストはすべて、を持たない専用の PHP プロセスにルーティングされます。 Xdebug. したがって、これらのリクエストは通常どおりに処理され、次の場合にパフォーマンスが低下することはありません。 Xdebug が読み込まれました。 を持つ web リクエストが送信されたとき Xdebug キーを押すと、次のコードを持つ別の PHP プロセスにルーティングされます。 Xdebug 読み込み済み。

使用目的 Xdebug 特に、Pro プランのステージング環境および実稼動環境では、アクセス権のあるユーザーのみ、個別の SSH トンネルと Web セッションを作成します。 この使用方法は、通常のアクセス方法とは異なり、すべてのユーザーではなく、ユーザーにアクセス権を提供するだけです。

以下が必要です。

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

  • この xdebug_key ステージング環境と Pro 環境を設定する際に設定される値。

    この 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
    

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

  1. リモートデバッグを有効にします。ブラウザーでサイトにアクセスし、URL に次の内容を追加します。この URL は次のとおりです。 KEY の値である xdebug_key.

    code language-http
    ?XDEBUG_SESSION_START=KEY
    

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

  2. を使用したデバッグの完了 Xdebug.

  3. セッションを終了する準備が整ったら、次のコマンドを使用して cookie を削除し、ブラウザーによるデバッグを終了します。このコマンドは次のとおりです。 KEY の値である xdebug_key.

    code language-http
    ?XDEBUG_SESSION_STOP=KEY
    
    note note
    NOTE
    この XDEBUG_SESSION_START 渡された POST リクエストはサポートされていません。

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
    

    ステージング環境および実稼動環境では、へのパスを指定する必要があります Xdebug CLI コマンドのデバッグ時の 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 Chrome でを使用する場合 Xdebug ヘルパー拡張機能。 詳しくは、 Xdebug ツールその他のブラウザーについては、ブラウザーのドキュメントを参照してください。

Chrome で Xdebug ヘルパーを使用するには:

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

  2. のインストール Xdebug Helper 拡張機能 Chrome ストアから。

  3. Chrome で拡張機能を有効にします(下図を参照)。

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

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

  5. ポップアップメニューから、 オプション.

  6. から IDE キー リスト、クリック PhpStorm.

  7. クリック 保存.

    Xdebug Helper オプション

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

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

    ナビゲーション バーが表示されない場合は、 表示 > ナビゲーションバー.

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

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

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

その方法は君次第だ。 以下のオプションがあります。

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

    この方法は、次の場合を除いて機能します composer.json アクセス権のないプライベートリポジトリ内のパッケージを参照します。 このメソッドは、Adobe Commerce コードベース全体を取得します。

  • をコピーします vendor, app, pub, lib、および 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
05f2f56e-ac5d-4931-8cdb-764e60e16f26