質問: "C:/php-7.4.13/ext" と設定しています。 1.のpathMappingsの設定は、{サーバー(=Apache)のパス}:{ローカルの実行リソースがあるパス}と思っているのですがそこが間違っているのでしょうか。 2.については、phpの拡張機能としてxdebugがあり、xdebugを動かすのに必要なdllを C:\php-7.4.13\extに置いている、と思っています。 そのdllをphpの設定ファイルで有効化しているということになるでしょうか?
回答: VirtualBox内のBridge AdapterなVMとしてSElinuxをオフにしたLinux+Apache+php環境を用意し、 ローカル環境にVSCodeをインストールし、 VSCodeのワークスペースとサーバに同じソースを配置した状態から説明します。 なお、サーバ上のWebRootは/var/www/htmlと仮定し、 ブラウザからVirtualboxのipを入力し、phpのサイトが閲覧できる状態と仮定します。 【サーバ側の設定】 1. webサーバにxdebugを追加します。phpのバージョンやどこからDLするかは適宜調整してください。 2. 上記でapacheに設定ファイルも追加されたため、下記の個所を書き換えます。 3. webサーバの設定をリロードする必要があるため、再起動します。 4. 正常に再起動し、ローカル環境のブラウザからPHPサイトを閲覧できることを確認してください。 sudo yum -y install --enablerepo=remi-php72 php-pecl-xdebug sudo vi /etc/php.d/15-xdebug.ini ``` [xdebug] xdebug.default_enable = 1 xdebug.idekey = "vscode" xdebug.remote_enable = 1 xdebug.remote_port=9000 xdebug.remote_autostart = 1 xdebug.remote_host= ``` sudo systemctl restart httpd.service 【VSCode側の設定】 1. PHP Debug拡張を追加します。 2. Webサーバ←→VSCode上で通信を行うのでウイルス対策ソフトのポートを開ける必要があります。 (今回はWebサーバの設定ファイルで9000番ポートを指定したので9000を開けます) 3. VSCodeで初回デバッグするとどう初期化するかを聞かれるので、拡張でいれた内容を選択します。 この時にVSCode環境にlaunch.json設定ファイルが存在しなければ自動生成されます。 いったんデバッグは終了して、 この生成されたjson設定ファイルを、以下のように書き換えます。 4. ブレークポイントを設置して再度デバッグを開始した後、ブラウザでphpサイトを閲覧します 5. ブレークポイントで処理が中段されることを確認してください。 launch.json ``` { // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: 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/html": "${workspaceRoot}" } } ] } ```