PhpStorm 2026.1 Help

同時デバッグセッション

複数層の Web アプリケーションを構築する場合、フロントエンド PHP コードからバックエンド PHP コードを呼び出すことができます。 多くの場合、開発者はそのようなアプリケーションの両側で同時に作業します。 このチュートリアルでは、フロントエンドコードからバックエンドコードにステップインし、同時にデバッグするいくつかの方法について説明します。

始める前に

PhpStorm は、最も人気のあるツールである XdebugZend Debugger でデバッグをサポートしています。 これらのツールは、互いにブロックし合うため、同時に使用することはできません。 この問題を回避するには、 Xdebug を構成する および Zend デバッガーの構成 に従って、関連する PHP インタープリターの php.ini ファイルを更新する必要があります。

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

  1. 設定 ダイアログ (Ctrl+Alt+S) で、 PHP をクリックします。

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

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

セカンダリセッションのデバッガーセッションが開始されていることを確認する

Xdebug と ZendDebugger が機能する方法は、PHP インタープリターから IDE への接続を確立することです。 可能ではありますが、すべての要求に対してこれを行うのではなく、デバッグが必要な場合にのみ行うことをお勧めします。 frontend スクリプトの場合、 PhpStorm ブックマークレットまたは ブラウザーデバッグ拡張機能を使用してブラウザーからこれを行います。

どちらのデバッグエンジンも、リクエスト変数(Xdebug には XDEBUG_SESSION_START=session_name 、Zend Debugger には start_debug=1 )を渡すことでオンデマンドでデバッグセッションを開始できます。これはブックマークレットやブラウザー拡張機能が行っていることです。 ただし、これは最初にアクセスしたスクリプトでのみ動作します。 次のスクリプトを考えてみましょう: frontend.php backend.php

  • frontend.php

    <?php $personJson = file_get_contents('http://localhost/backend.php'); $person = json_decode($personJson); var_dump($person);
  • backend.php

    <?php class Person { public $Name; public $Email; } $person = new Person(); $person->Name = "John"; $person->Email = "john.smith@company.com"; echo json_encode($person);

最初のスクリプトが file_get_contents を使用して 2 番目のスクリプトを呼び出すと、既存のデバッグセッションの一部ではない別の HTTP 接続が開始され、新しいセッションも開始されません。 Xdebug または ZendDebugger で呼び出されたスクリプトのデバッグも開始する場合は、常にデバッグを開始するようにデバッガーを構成するか(Xdebug2 の場合は xdebug.remote_autostart=1 または Xdebug3 の場合は xdebug.remote_autostart=yes )、要求パラメーターを渡す必要があります。

これを行うために frontend.php スクリプトを書き直してみましょう。 最も単純な形式では、Xdebug または Zend デバッガーリクエストパラメーターが存在することを確認し、渡すだけです。

<?php $debuggingQuerystring = ''; if (isset($_GET['XDEBUG_SESSION_START'])) { // xdebug $debuggingQuerystring = 'XDEBUG_SESSION_START=' . $_GET['XDEBUG_SESSION_START']; } if (isset($_COOKIE['XDEBUG_SESSION'])) { // xdebug (cookie) $debuggingQuerystring = 'XDEBUG_SESSION_START=PHPSTORM'; } if (isset($_GET['start_debug'])) { // zend debugger $debuggingQuerystring = 'start_debug=' . $_GET['start_debug']; } $personJson = file_get_contents('http://localhost/backend.php?' . $debuggingQuerystring); $person = json_decode($personJson); var_dump($person);

これにより、親と同じセッション名でクライアントデバッグセッションが開始されます (Xdebug が Cookie を使用して開始された場合を除き、デフォルトの PHPSTORM セッション名の使用に戻ります)。

同時デバッガー接続の数を増やす

デフォルトでは、PhpStorm は同時に 1 つのデバッガー接続のみ受け付けます。 これは良いことです。AJAX を多用し、AJAX コールごとにデバッグセッションが開始されたら大変です! ただし、例えばフロントエンドとバックエンドを同時にデバッグする場合など、複数の接続を許可した方がよいシナリオもあります。

複数のデバッガー接続のサポートを有効にするには、 設定 ダイアログ (Ctrl+Alt+S) で PHP | デバッグ に移動します。 開いた デバッグ ページで、最大接続数をたとえば 3 に増やします。

PS 設定の最大デバッグ接続

受信デバッガー接続のリッスン

PhpStorm で、以下のいずれかの方法で受信デバッグ接続のリッスンを有効化します:

  • ツールバー / ステータスバーの the Start Listening for PHP Debug Connections button をクリックします。

  • メインメニューで 実行 | PHP デバッグ接続のリッスンを開始 を選択します。

これにより、Web サーバーでデバッグセッションが開始されると PhpStorm が反応し、 デバッグツールウィンドウ が自動的に開きます。 デバッグセッションを開始する前に、 ブレークポイントが設定されているか、 設定 ダイアログ Ctrl+Alt+Sデバッグ ページで PHP スクリプトの最初の行で中断する。 オプションが有効になっていることを確認してください。

デバッグセッションを開始する

ブラウザーからデバッグセッションを開始するには、 PhpStorm ブックマークレットまたは ブラウザーデバッグ拡張機能を使用できます。 ブレークポイントを追加するとすぐに、PhpStorm はデバッガー接続が入っていることを通知し、スクリプトの実行を一時停止します。

PS 同時デバッグ 1

file_get_contents 関数呼び出しにステップインすると、PHP は別のデバッガー接続を開始し、PhpStorm で別タブにデバッガーが開きます。 これで frontend から バックエンド へとステップ実行中です。

PS 同時デバッグ 2

バックエンド スクリプトが復帰すると、デバッガーは frontend スクリプトで中断したところまで続きます。

PS 同時デバッグ 3

PHP と JavaScript を同時にデバッグする

Web アプリケーションは一般的に PHP コードと JavaScript コードの両方で構成されます。PHP コードはサーバー側で、JavaScript はブラウザーで実行されます。 PhpStorm を使えば、サーバー上で何が起きているかを確認したり、変数を修正したりといった PHP コードのデバッグが簡単に行えます。 また、IDE から JavaScript デバッグセッションを開始することで、ブラウザー上で実行されている JavaScript もデバッグできます。 両方を同時にデバッグする方法については、 PHP と JavaScript コードを同時にデバッグするチュートリアルを参照してください。

2026 年 5 月 22 日