web-dev-qa-db-ja.com

仮想マシンを備えたポート9000でのXDebug-EADDRINUSE ::: 9000

SymfonyアプリケーションをVirtualBox VMで実行しています。 PHPはXDebugで実行されており、適切に構成されています。他の人が同じVMのスナップショットで動作するように管理しているため、これはわかっています。

VS Code XDebugで構成しようとすると、次のlaunch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

しかし、「デバッグの開始:XDebugをリッスン」をクリックすると、次のエラーが発生します。

エラー:EADDRINUSE ::: 9000をリッスンします

そのポートを使用しているプロセスを強制終了しようとしましたが、驚いたことに、接続しようとした仮想マシンでした。

この構成で何を見逃しましたか?

14

私はちょうど自分自身で答えを見つけました。

問題はVirtualboxの構成にありました。

ネットワーク設定で、ポート9000のポート転送があり、デバッガーがローカルで実行されないようにブロックしました。削除すると、問題なく動作しました。

2

ポート9000は、他のアプリ(MacOsX上のネイティブApacheなど)、VM、Dockerコンテナーなどのデフォルト構成で頻繁に使用されます...

信頼できる解決策は、別のポートを使用することです。たとえば、9001 :)

つまり:

  • IDE xdebug configsをポート9000から9001に更新;
  • php.ini(xdebug.ini)に次の行を追加します

    xdebug.remote_port=9001
    

また、telnetなどのツールを使用して、9000ポートの使用状況を確認できます。

2
yarche

MacOSでは、ターミナルを使用して、次のようにポート9000で何が開いているかを判別できます。

Sudo lsof -nP -i4TCP:9000 | grep LISTEN

上記のSudoを使用して、ログインアカウントが所有していないプロセスを表示できます。

例えば、私が上記をしたとき、私は得ました:

php-fpm 110 root    6u  IPv4 0x5cb825c4aa80be09      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm 261 _www    0u  IPv4 0x5cb825c4aa80be09      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm 262 _www    0u  IPv4 0x5cb825c4aa80be09      0t0  TCP 127.0.0.1:9000 (LISTEN)

その後、次のコマンドでプロセスを終了できます。

Sudo kill 110

次に、ポートを解放して、競合することなくXdebugを起動できるようにします。

それで解決しました。

2
raison

launch.jsonlaunch操作を実行しようとしています。これは、vscodeが新しいインスタンスをstartしようとする結果になります。 phpのxdebugをポート9000で

launch構成をattach構成に置き換えてみてください。

それが役に立てば幸い。

2
Webvoid

私の場合、sonarqubeサーバーは9000で実行されていたため、xdebugを9002に設定しました。

0
graeme