Xdebugの設定
Xdebugは、PHPをデバッグするための拡張機能です。 お好みのIDEを使用できますが、次に、ローカル環境でデバッグするようにXdebugとPhpStormを設定する方法について説明します。
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を有効にするには:
-
ローカル端末で、テキストエディターで
.magento.app.yamlファイルを開きます。 -
runtimeセクションのextensionsの下にxdebugを追加します。 例:code language-yaml runtime: extensions: - redis - xsl - newrelic - sodium - xdebug -
.magento.app.yamlファイルに変更を保存し、テキストエディターを終了します。 -
変更を追加、コミット、およびプッシュして、環境を再デプロイします。
code language-bash git add .magento.app.yamlcode 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を設定するには:
-
PhpStorm プロジェクトで、設定 パネルを開きます。
- macOS - PhpStorm > Settingsを選択します。
- Windows/Linux - ファイル > 設定を選択します。
-
設定 パネルで、PHP セクションを展開し、サーバーをクリックします。
-
+をクリックして、サーバー設定を追加します。 プロジェクト名は上部がグレーで表示されています。
-
[ オプション ]新しいサーバー設定に対して次の設定を行います。 PHPStorm ドキュメントの「 デバッグサーバーが構成されていません」を参照してください。
- 名前 - ホスト名と同じ名前を入力します。 デバッグにCLIを使用するには、この値が デバッグ CLI コマンド の
PHP_IDE_CONFIG変数の値と一致する必要があります。 - ホスト - ホスト名を入力します。
- Port -
443と入力します。 - Debugger-
Xdebugを選択します。
- 名前 - ホスト名と同じ名前を入力します。 デバッグにCLIを使用するには、この値が デバッグ CLI コマンド の
-
パスマッピングを使用を選択します。 ファイル/ディレクトリ ペインに、
serverNameのプロジェクトのルートが表示されます。 -
サーバー 列の 絶対パスで、編集 アイコンをクリックし、環境に基づいて設定を追加します。
-
すべてのスターター環境とPro統合環境のリモートパスは
/appです。 -
プロステージング環境および実稼動環境の場合:
- 実稼動:
/app/<project_code>/ - ステージング:
/app/<project_code>_stg/
- 実稼動:
-
-
Xdebug ポートを
9000,9003に変更するか、PHP > デバッグ > Xdebug > デバッグポート パネルで9000に制限できます。 -
「適用」をクリックします。
PHPStorm実行/デバッグ設定の作成
これにより、Adobe Commerce アプリケーションからのリクエストを処理するための正しいデバッグ設定がアプリケーションで有効になります。
-
PHPStorm アプリケーションを開き、画面の右上にある Add Configuration をクリックします。
-
Add new run configurationをクリックします。
-
「PHP Remote Debug」オプションを選択します。
- 一意だが認識可能な名前を入力してください。
- 「Filter debug connection by IDE key**」チェックボックスをオンにします。
- 前のセクション で作成したサーバーを選択します。 まだ作成していない場合は、今すぐ作成できますが、セットアップガイドのその部分を参照してください。
- IDE key(session id) テキストフィールドに、
PHPSTORMを大文字で入力します。 設定の他の部分でも使用するため、同じことを維持することが重要です。 別の文字列を選択した場合は、設定および設定プロセスの別の場所で使用することを忘れないでください。
-
Apply > OKをクリックします。
ポート転送の設定
サーバーからのXDEBUG接続をローカルシステムにマッピングします。 あらゆる種類のデバッグを行うには、Adobe Commerce on cloud infrastructure サーバーからローカルマシンにポート 9000を転送する必要があります。 次のいずれかのセクションを参照してください。
MacまたはUNIXでのポート転送®
MacまたはUNIX®環境でポート転送を設定するには:
-
ターミナルを開きます。
-
SSHを使用して接続を確立します。
code language-bash ssh -R 9000:localhost:9000 <ssh url>ソケットが転送中のポートに接続されるたびにターミナルに表示されるように、
-v(詳細)オプションを使用します。「接続できません」または「リモートでポートをリッスンできませんでした」というエラーが表示された場合は、ポート 9000を占有しているサーバーに別のアクティブなSSH セッションが残っている可能性があります。 その接続が使用されていない場合は、終了できます。
接続をトラブルシューティングするには:
-
SSHを使用して、リモート統合環境、ステージング環境または実稼動環境にログインします。
-
SSH セッションのリストを表示:
who -
ユーザー別の既存のSSH セッションを表示します。 自分以外のユーザーに影響を与えないように注意してください。
- 統合:ユーザー名は
dd2q5ct7mhgusと似ています - ステージング:ユーザー名は
dd2q5ct7mhgus_stgに似ています - 実稼動:ユーザー名は
dd2q5ct7mhgusに似ています
- 統合:ユーザー名は
-
自分より古いユーザーセッションの場合は、
pts/0などの擬似端末(PTS)値を見つけます。 -
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 トンネルを設定するには:
-
まだダウンロードしていない場合は、Puttyをダウンロードしてください。
-
Puttyを開始します。
-
カテゴリ ウィンドウで、セッションをクリックします。
-
次の情報を入力します。
- ホスト名(またはIP アドレス) フィールド:Cloud サーバーのSSH URLを入力します
- Port フィールド:
22と入力します
-
カテゴリ ペインで、接続 > SSH > トンネルをクリックします。
-
次の情報を入力します。
- Source port フィールド:
9000と入力します - 宛先 フィールド:
127.0.0.1:9000と入力します - 「リモート」をクリック
- Source port フィールド:
-
「追加」をクリックします。
-
カテゴリー ペインで、セッションをクリックします。
-
「保存済みセッション」フィールドに、このSSH トンネルの名前を入力します。
-
保存をクリックします。
-
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 ステージングおよび実稼動用のデバッグ
プロプランのステージング環境と実稼動環境で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 トンネルを設定するには:
-
ターミナルを開きます。
-
クラスターの各web ノードのすべてのSSH セッションをクリーンアップします。
code language-bash ssh USERNAME@CLUSTER.ent.magento.cloud 'rm /run/platform/USERNAME/xdebug.sock' -
クラスターの各web ノードに対して、Xdebug用のSSH トンネルを設定します。
code language-bash ssh -R /run/platform/USERNAME/xdebug.sock:localhost:9000 -N USERNAME@CLUSTER.ent.magento.cloud
USERNAME@CLUSTER.ent.magento.cloudの正しい値を取得するには:- 方法1: magento-cloud CLI:
magento-cloud ssh --all - 方法2: Commerce コンソール:https://CONSOLE-URL/ENVIRONMENTで、「
SSH v」ドロップダウンをクリックします
環境URLを使用してデバッグを開始するには:
これは、使用される設定のデモと、リモートデバッグセッションを開始するためのGET パラメーターのデモです。
-
リモートデバッグを有効にします。ブラウザーでサイトにアクセスし、
KEYがxdebug_keyの値であるURLに次を追加します。code language-http ?XDEBUG_SESSION_START=KEYこの手順では、ブラウザーのリクエストをトリガー Xdebugに送信するCookieを設定します。
-
Xdebugでデバッグを完了してください。
-
セッションを終了する準備ができたら、次のコマンドを使用してCookieを削除し、
KEYがxdebug_keyの値であるブラウザーを介してデバッグを終了します。code language-http ?XDEBUG_SESSION_STOP=KEYnote NOTE POST要求によって渡されたXDEBUG_SESSION_STARTはサポートされていません。
Debug CLI コマンド
この節では、CLI コマンドのデバッグについて説明します。
CLI コマンドをデバッグするには:
-
CLI コマンドを使用して、デバッグするサーバーにSSHで接続します。
-
次の環境変数を作成します。
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 セッションの終了時に削除されます。
-
デバッグを開始
スターター環境とPro統合環境では、CLI コマンドを実行してデバッグします。
ランタイムオプションを追加できます。例:code language-bash php -d xdebug.profiler_enable=On -d xdebug.max_nesting_level=9999 bin/magento cache:cleanPro ステージング環境および実稼動環境では、CLI コマンドをデバッグする際に、Xdebug PHP設定ファイルへのパスを指定する必要があります。例:
code language-bash php -c /etc/platform/USERNAME/php.xdebug.ini bin/magento cache:clean
Web リクエストのデバッグ
次の手順は、web リクエストのデバッグに役立ちます。
-
拡張機能 メニューで、デバッグをクリックして有効にします。
-
右クリックしてオプションメニューを選択し、IDE キーを PHPSTORM に設定します。
-
ブラウザーにXdebug クライアントをインストールします。 設定して有効にします。
例:Chromeの設定
この節では、Xdebug Helper拡張機能を使用してChromeでXdebugを使用する方法について説明します。 他のブラウザーのXdebug ツールについて詳しくは、ブラウザーのドキュメントを参照してください。
ChromeでXdebug Helperを使用するには:
-
クラウド サーバーにSSH トンネル を作成します。
-
Chrome ストアからXdebug Helper拡張機能をインストールします。
-
次の図に示すように、Chromeで拡張機能を有効にします。
-
Chromeで、Chrome ツールバーの緑色のヘルパーアイコンを右クリックします。
-
ポップアップメニューから、オプションをクリックします。
-
IDE キー リストから、PhpStormをクリックします。
-
保存をクリックします。
-
PhpStorm プロジェクトを開きます。
-
上部のナビゲーションバーで、リスニングを開始 アイコンをクリックします。
ナビゲーションバーが表示されない場合は、表示/ナビゲーションバーをクリックします。
-
PhpStorm ナビゲーションパネルで、テストするPHP ファイルをダブルクリックします。
ローカルコードのデバッグ
読み取り専用環境のため、デバッグを実行するには、環境または特定のGit ブランチからローカル ワークステーションにコードをプルする必要があります。
選ぶ方法はあなた次第です。 次のオプションがあります。
-
Gitからコードをチェックアウトして、
composer installを実行しますこのメソッドは、
composer.jsonさんがアクセス権のないプライベートリポジトリ内のパッケージを参照しない限り機能します。 このメソッドは、Adobe Commerce コードベース全体を取得します。 -
vendor、app、pub、lib、およびsetupディレクトリをコピーしますこの方法では、テスト可能なすべてのコードが得られます。 静的なアセットの数によっては、大量のファイルを含む転送が長くなる可能性があります。
-
vendorディレクトリのみをコピーほとんどのコードは
vendorディレクトリにあるので、このメソッドはコードベース全体をテストしているわけではありませんが、適切なテストを行う可能性が高くなります。
ファイルを圧縮してローカル コンピューターにコピーするには:
-
SSHを使用してリモート環境にログインします。
-
ファイルを圧縮します。
code language-bash tar -czf /tmp/<file-name>.tgz <directory list>例えば、
vendorディレクトリのみを圧縮するには、次の手順を実行します。code language-bash tar -czf /tmp/vendor.tgz vendor -
ローカル環境で、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