Xdebug の設定
Xdebug は PHP をデバッグするための拡張モジュールです。 任意の IDE を使用できますが、ローカル環境で Xdebug を設定してデバッグを行う方法につ PhpStorm ては、以下で説明します。
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 を有効にするには、.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.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 を設定するには:
-
PhpStorm プロジェクトで、設定 パネルを開きます。
- macOS - PhpStorm/設定 を選択します。
- Windows/Linux - ファイル/設定 を選択します。
-
設定 パネルで「PHP」セクションを展開し、「サーバー」をクリックします。
-
+ をクリックして、サーバー設定を追加します。 プロジェクト名は、上部がグレーで表示されます。
-
[ オプション ] 新しいサーバー設定に対して次の設定を行います。 PHPStorm ドキュメントの デバッグサーバーが設定されていませんを参照してください。
- 名前 - ホスト名と同じ名前を入力します。 デバッグに CLI を使用するには、この値が Debug CLI コマンドの
PHP_IDE_CONFIG
変数の値と一致する必要があります。 - ホスト - ホスト名を入力します。
- ポート -
443
と入力します。 - デバッガー - 「
Xdebug
」を選択します。
- 名前 - ホスト名と同じ名前を入力します。 デバッグに CLI を使用するには、この値が Debug CLI コマンドの
-
パスマッピングを使用 を選択します。 ファイル/ディレクトリ ペインに、
serverName
のプロジェクトのルートが表示されます。 -
サーバー上の絶対パス 列で 編集 アイコンをクリックし、環境に基づいて設定を追加します。
-
すべてのスターター環境および Pro 統合環境では、リモートパスは
/app
です。 -
ステージング環境および実稼動環境の場合:
- 実稼動:
/app/<project_code>/
- ステージング:
/app/<project_code>_stg/
- 実稼動:
-
-
Xdebug ポートを
9000,9003
に変更するか、PHP/Debug/Xdebug/Debug Port パネルでポートを9000
のみに制限できます。 -
適用 をクリックします。
PHPStorm Run/Debug 設定の作成
これにより、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
接続をローカルシステムにマッピングします。 あらゆる種類のデバッグを行うには、Cloud Infrastructure Server 上のAdobe Commerceからローカルマシンにポート 9000 を転送する必要があります。 以下のセクションの 1 つを参照してください。
Macまたは UNIX のポート転送®
Macまたは UNIX® 環境でポート転送を設定するには:
-
ターミナルを開きます。
-
SSH を使用して接続を確立します。
code language-bash ssh -R 9000:localhost:9000 <ssh url>
-v
(verbose) オプションを使用すると、転送中のポートにソケットが接続されるたびに、端末に表示されるようになります。「接続できません」または「リモートのポートをリッスンできませんでした」というエラーが表示される場合は、ポート 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 をダウンロードしてください。
-
パテを起動します。
-
カテゴリ ウィンドウで、[セッション] をクリックします。
-
次の情報を入力します。
- ホスト名(または IP アドレス) フィールド:クラウドサーバーの SSH URL を入力します
- ポート フィールド:
22
を入力します
-
カテゴリ パネルで、接続/SSH/トンネル をクリックします。
-
次の情報を入力します。
- Source ポート フィールド:
9000
を入力 - 宛先 フィールド:
127.0.0.1:9000
を入力します - リモート をクリックします
- Source ポート フィールド:
-
追加 をクリックします。
-
カテゴリ ウィンドウで、「セッション」をクリックします。
-
「Saved Sessions」フィールドに、この 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パラメーターのデモです。
-
リモートデバッグを有効にします。ブラウザーでサイトにアクセスし、URL に次の
KEY
を追加します(xdebug_key
の値)。code language-http ?XDEBUG_SESSION_START=KEY
この手順では、ブラウザーリクエストをトリガーXdebug に送信する Cookie を設定します。
-
Xdebug を使用してデバッグを完了します。
-
セッションを終了する準備が整ったら、次のコマンドを使用して cookie を削除し、ブラウザーでのデバッグを終了します。
KEY
はxdebug_key
の値です。code language-http ?XDEBUG_SESSION_STOP=KEY
note note 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:clean
ステージング環境および実稼動環境では、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