私はこのエラーメッセージに苦労しています。エディターをアップグレードまたは再起動した後、Visual Studio Codeでxdebugを実行できない場合があります。エラーのスクリーンショットは次のとおりです。
誰かがこれで私を助けることができますか?
私のマシンで何が起こっているのかを知るために数分後、私は自分の問題を解決する方法を見つけました。
xdebugはポート9000
に基づいて実行されており、Debug Console
(VSCode)にはメッセージlisten EADDRINUSE :::9000
があるので、別のプロセスが実行されていると思います。ポート9000
なので、このコマンドで実行されているプロセスを確認します
Sudo netstat -nlp | grep :9000
上記のコマンドは、ポート9000
で実行されているプロセスを表示し、この結果を取得します
tcp6 0 0 :::9000 :::* LISTEN 14856/hhvm
[〜#〜] hhvm [〜#〜]デフォルトでxdebugのポートを引き継いだので、サービスを停止するか、ポート番号を変更する必要があります。
ヒント:
lsof
を使用して、特定のポートのプロセスを表示することもできます
lsof -t -i :9000
VSCodeを使い始めたときに同じ問題が発生しました。正確に何が問題なのかを理解するのに3時間かかりました。使用されているポートやその他の設定など、段階的なデバッグをじっと見つめていました。
ついに私は幸運で解決策を得ました:)それで私はみんなと共有しました。私の調査結果と、XdebugをVSCodeで動作させるためにセットアップする必要があるものを確認できます。
VSコードでXdebugをセットアップしてPHPコードをオンザフライでデバッグします。ステップバイステップの手順に従ってxdebugを正しくセットアップします。
[Xdebug] zend_extension = "FULL-XDEBUG-DLL-FILE-PATH"
例
; zend_extension = "d:\ wamp64\bin\php\php7.1.9\zend_ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"
[〜#〜]または[〜#〜]
; zend_extension = "d:\ wamp64\bin\php\php7.1.9\ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"
xdebug.remote_enable=1
xdebug.remote_autostart = 1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.remote_Host="localhost"
xdebug.profiler_output_dir="<tmp path>"
;Example
;xdebug.profiler_output_dir="d:\wamp64\tmp"
Phpinfoを開いてxdebugを見つけます。見つかった場合は、xdebugが正常にインストールされています。 Wampが再起動してもローカルホストが開かない場合は、PORTを変更してみてください。すでに他のアプリケーションでPORTを使用できます。
JSONの例-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
}
]
}
"php.validate.run": "onType",
"php.validate.executablePath": "<Your-Full-PHP-Path>php.exe"
PHPプロジェクトフォルダを開き、コードをデバッグしてみてください。次のエラーが発生した場合
VS Code Debugアダプタープロセスが予期せず終了しました
または
VS CodeConsoleエラー-> EADDRINUSE :: 900をリッスン)
これは、PORT9000が現在別のプログラムによって使用されていることを意味します。PHPStormXdebugまたはPORT9000を使用している他のアプリケーションを実行している可能性があります。PHPStormまたは他のプログラムを閉じて、もう一度デバッグしてみてください。
それでもエラーが発生する場合は、PORT 9000を使用してどのプログラムを見つけて強制終了してください。それでもエラーが発生する場合は、php.iniとlaunch.jsonのPORTを変更し、wampとVSCodeを再起動してください。
これでXDEBUGがVSCodeで動作していることがわかります。
> ####テストするコード例
<?php
/*
|--------------------------------------------------------------------------
| PHP XDebug Code Example - VS Code
|--------------------------------------------------------------------------
|
| Information:
|
| VS Code :
| Version : 1.19.2
| Commit : 490ef761b76b3f3b3832eff7a588aac891e5fe80
| Date : 2018-01-10T15:55:03.538Z
| Shell : 1.7.9
| Renderer : 58.0.3029.110
| Node : 7.9.0
| Architecture : x64
|
| Windows : 10
|
| WAMP Server : 3.1.0
| PHP : 7.1.9
| Apache : 2.4.27
| MySQL : 5.7.19
|
| PHP INI PATH : D:\wamp64\bin\Apache\apache2.4.27\bin\php.ini
| [Xdebug]
| zend_extension = "d:\wamp64\bin\php\php7.1.9\zend_ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"
| xdebug.remote_enable = 1
| xdebug.remote_autostart = 1
| xdebug.remote_port = "9000"
| xdebug.profiler_enable = 1
| xdebug.remote_Host = "localhost"
| xdebug.profiler_output_dir = "d:\wamp64\tmp"
|
*/
// first loop
for ($i=0; $i < 10; $i++) {
echo $i;
}
echo PHP_EOL;
// second loop
for ($i = 0; $i < 20; $i++)
{
echo $i;
}
/* End of file php-test.php */
/* Location: /wamp64/www/test/php-test.php */
ありがとう:)
古いバージョンのVSCodeでこのエラーが発生し、v1.37.1に更新したところ、修正されました。
VS Codeの更新Access Deniedエラーが発生し、ダイアログFailed Delete Markerが表示されました。 Process Monitorを実行し、ダイアログで[再試行]をクリックすると、更新が完了して機能しました。