web-dev-qa-db-ja.com

xdebugを使用したVSCodeのセットアップ:pathMapping

VSCodeでデバッグを設定しようとしていますが、少し問題が発生しました。 localSourceRootへのパスを入力しましたが、Intellisenseはそれが非推奨であり、代わりにpathMappingを使用する必要があると言っています。

私は初心者で、それを適切に設定する方法がわかりません。誰かが私にpathMappingが要求している変数や属性を説明できれば、私は永遠にあなたの借金になります。

私のシステム情報は次のとおりです:PHPバージョン:5.524 xdebugバージョン:2.2.5 OS Windows 8.1デスクトップサーバーの使用バージョン:3.8.5

Phpinfo()を確認したところ、ファイルにXdebugが表示されているので、インストールされていることがわかります。 launch.jsonファイルは、ポート9000などの非常に基本的なものです。とんでもないpathMappingを実行する必要があります。

ありとあらゆる助けをありがとう。

4
rocknriter

PHPデバッグ拡張機能を使用していると思いますか?

https://github.com/felixfbecker/vscode-php-debug

README.mdには次のように書かれています。

リモートホストのデバッグ

リモートホストで実行中のアプリケーションをデバッグするには、ローカルホストとは異なるIPに接続するようにXDebugに指示する必要があります。これは、xdebug.remote_HostをIPに設定するか、xdebug.remote_connect_back = 1を設定して、XDebugが常にWeb要求を行ったマシンに接続し直すようにすることで実行できます。後者は、同じサーバーをデバッグする複数のユーザーをサポートし、Webプロジェクトで「正常に機能する」唯一の設定です。繰り返しになりますが、詳細については、この件に関するXDebugのドキュメントを参照してください。

VS Codeでサーバー上のファイルをローカルマシン上の適切なファイルにマップするには、launch.jsonでpathMappings設定を設定する必要があります。例:

// server -> local
"pathMappings": {
  "/var/www/html": "${workspaceRoot}/www",
  "/app": "${workspaceRoot}/app"
}

スクリプトは常にローカルで起動されるため、CLIデバッグオプションの設定はリモートホストデバッグでは機能しないことにも注意してください。リモートホストでCLIスクリプトをデバッグする場合は、コマンドラインから手動で起動する必要があります。

8
dethegeek

したがって、これは私自身だけでなく、これが役立つと思うかもしれない他の人にとっても同じくらいの好みです。 xdebugとdrupalvmを使用してVSCODEを実行していますが、php.iniで以下を設定すると、以下が機能します。

php_xdebug_idekey: VSCODE

{
// 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,
        "pathMappings": {
            "/var/www/drupalvm/drupal": "${workspaceRoot}/drupal",
          },
        "log": true
    },
    {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9000
    }
]

}

0
Daniel