

phpのxdebugをVSCode上でインストールしました。ステップ実行をやりたいのですが、  
ブレークポイントを置いてメニューからRun>Start Debuggingとしても処理を止めることができません。

現在の状況は、以下のようになっています。

１． xdebugの設定ファイル（launch.json）の  
stopOnEntryをtrue (デバッグ開始時に最初の行で止まる設定）  
pathMappingsを"${c:/Apache24}": "${c:/Apache24/htdocs}"

pathMappingsのc:/Apache24/htdocsに実行したいphpを置いています。

２．php.iniの設定（Dynamic
Extensions）で、[xdebug.org](https://xdebug.org/download)からダウンロードしたxdebugのdllファイルを追加。

＜php.ini＞  
zend_extension=xdebug-3.0.1-7.4-vc15-x86_64

xdebug-3.0.1-7.4-vc15-x86_64.dllは、  
C:\php-7.4.13\extに置いています。  
php.iniで  
extension_dir = "C:/php-7.4.13/ext"  
と設定しています。

１．のpathMappingsの設定は、{サーバー(=Apache)のパス}:{ローカルの実行リソースがあるパス}と思っているのですがそこが間違っているのでしょうか。

２．については、phpの拡張機能としてxdebugがあり、xdebugを動かすのに必要なdllを  
C:\php-7.4.13\extに置いている、と思っています。  
そのdllをphpの設定ファイルで有効化しているということになるでしょうか？


CC BY-SA 4.0
2021-01-01T04:49:13.003
73002
2022-07-15T02:04:55.437
43340
question
php apache vscode
PHPでxdebugを使ってブレークポイントでステップ実行をしたいです。


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

[code]

    [xdebug]
    xdebug.default_enable = 1
    xdebug.idekey = "vscode"
    xdebug.remote_enable = 1
    xdebug.remote_port=9000
    xdebug.remote_autostart = 1
    xdebug.remote_host=<develop pc's IP>
    
[/code]

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

[code]

    {
        // 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}"
                }
            }
        ]
    }
    
[/code]


CC BY-SA 4.0
2021-01-01T06:21:46.890
73003
2021-01-01T06:21:46.890
25396
73002
answer