ここで xdebug.remote_host について言及したいと思います
xdebug.remote_host="127.0.0.1"
有効じゃない。場合によってはうまくいくかもしれませんが、引用符が問題を引き起こす可能性もあります。ほとんどの人は、IP アドレスを引用符で囲んで使用しても問題はありませんが、これは悪い前例になります。ホスト名または URL を使用する場合は、引用符で囲む必要があると思われます。これは正しくありません。引用符で囲まれた URL は機能しません。
URL を使用してデバッグする場合は、次のように等号の後に URL を配置するだけでこれを行うことができます。
xdebug.remote_host=subdomain.mydomain.com
また、ポート番号がある場合は追加しないでください。これは機能しません:
xdebug.remote_host=subdomain.mydomain.com:9000
これはあなたがしたいことです:
xdebug.remote_host=subdomain.mydomain.com
xdebug.remote_port=9000
これを行う場合は、remote_connect_back が無効になっていることも確認してください。このような:
xdebug.remote_connect_back=0
または、次のように完全に省略できます。
;xdebug.remote_connect_back=1
remote_connect_back が有効になっている場合、着信接続から IP アドレスを取得しようとし、remote_host とポートの設定を無視します。
Xdebug はプレーン オールド TCP を使用して接続を確立します。これは HTTP ではありません。これは、Fiddler などのツールがデバッグに関するパケットや情報を表示しないことを意味します。デバッグが必要で、サーバーが IDE を呼び出しているかどうかを確認する必要がある場合は、確認する方法がいくつかあります。
Wireshark を使用すると、TCP トラフィックを確認できます。また、Windows を使用している場合、Microsoft Message Analyzer は TCP も監視できます。
ただし、IDE を削除するだけでリモート デバッグの問題が発生する可能性がある場合は、代わりにローカル TCP サーバーを起動することをお勧めします。
これは、TCP サーバーを起動するための優れた無料の Java プログラムです: http://sockettest.sourceforge.net/
[IP アドレス] セクションで、127.0.0.1 をリストするか、0.0.0.0 のままにします。次に、ポート番号をリストします。通常、xdebug のデフォルトは 9000 です。
TCP サーバーが実行されたら、xdebug_break(); を使用してリモート Web ページを開きます。その中で関数呼び出し。これにより、リモート サーバー上の xdebug に、php.ini にリストされている任意のサーバーとポートでデバッグを開始するように指示されます。
ソケット サーバーを監視し、接続できるかどうかを確認します。送信される最初のデータは次のようになります。
<init appid="APPID"
idekey="IDE_KEY"
session="DBGP_COOKIE"
thread="THREAD_ID"
parent="PARENT_APPID"
language="LANGUAGE_NAME"
protocol_version="1.0"
fileuri="file://path/to/file">
ここまでできれば、リモート デバッグは機能しています。サーバーを停止し、そのポートでリッスンするように IDE をセットアップするだけです!
あなたが私たちのほとんどと同じなら、開発者のマシンは NAT を備えたルーターの背後にあります。これは、オフィス内の全員が同じパブリック IP アドレスを持っていることを意味します。xdebug がその IP アドレスに接続してデバッグを開始すると、コンピューターではなくルーターにヒットするため、これは問題です。ルーターは、特定のポート番号を個々のコンピューターに渡すように構成できますが、ルーターの設定を元に戻すまでそのポートが開いているため、そうしたくない場合があります。
もう 1 つのオプションは、SSH を使用することです。ここにこれを行う方法の良い例があります:
私の好みのオプションは、Ngrokを使用することです。Ngrok は、http、https、および TCP トラフィックをリダイレクトするための優れたツールです。TCP リダイレクト機能を使用するには、無料のアカウントにサインアップする必要があります。
アカウントにサインアップし、API キーをコンピューターに追加したら、IDE がインストールされているコンピューターで次のコマンドを実行します。
ngrok tcp 9000
これにより、ngrok サーバーからコマンドを実行した任意のマシンへの tcp (http ではない) トンネルが開かれます。ポート 9000 を使用しています。IDE が別の Xdebug ポート用に構成されている場合は、このポートを変更できます。
これはあなたが見るものです:
開かれた TCP トンネルの URL を確認する必要があります。この例では、次のとおりです。
0.tcp.ngrok.io:14904
このセッションでは、サーバーの Xdebug 設定は次のようになります。
xdebug.remote_host=0.tcp.ngrok.io
xdebug.remote_port=14904
ngrok を起動するたびに URL とポートが変わります。同じ URL とポートを使用する場合は、有料アカウントにアップグレードする必要があります。php.ini に変更を加えた後は、必ず apache を再起動してください。