Mac に Xdebug をインストールして VSCode でデバッグする

経緯

ちょっとしたサンプルプログラムをホストマシンで試すときに、いつも var_dump() デバッグ使ってたけどちょっとしたサンプルプログラムだろうが何だろうが Xdebug 使ったほうがもっと楽になるよね、ハム太郎

手順

Debug Buildno になっていることを確認

$ php -i | grep 'Debug Build'
Debug Build => no

ついでに Xdebug がインストールされていないことも確認

$ php -m | grep xdebug

何も表示されなければOK

Xdebug のインストール

  1. 下記のダウンロードサイトから Xdebug をDLする。
    http://www.xdebug.org/download.php
    ※どのversionをDLすればいいかわからない場合は $ php -i | pbcopy を下記にペーストして調べる。
    https://xdebug.org/wizard
  2. 解凍して任意のディレクトリに移動

     $ tar -zxvf ~/Downloads/xdebug-xxx.tgz && mv ~/xdebug-xxx ~/{任意のディレクトリ} && cd ~/{任意のディレクトリ}/xdebug-xxx
    
  3. xdebug-xxx ディレクトリにいる状態で以下を順に実行していく

     $ phpize  
     $ ./configure  
     $ make  
    

    完了したら modules ディレクトリに xdebug.so があることを確認する
    ない場合はどこかの手順でエラーが出ているはずなので随時解消する

  4. php.ini の修正

    php.iniの場所を確認

     $ php --ini
     Configuration File (php.ini) Path: /opt/homebrew/etc/php/7.4
     Loaded Configuration File:         /opt/homebrew/etc/php/7.4/php.ini
     Scan for additional .ini files in: /opt/homebrew/etc/php/7.4/conf.d
     Additional .ini files parsed:      /opt/homebrew/etc/php/7.4/conf.d/ext-opcache.ini
    

    xdebug.so までのフルパスを追記

     zend_extension={xdebug.so までのフルパス}
    
  5. Xdebug が有効になっていることを確認する

     $ php -m | grep xdebug
     xdebug
    

    xdebug が表示されればOK

VSCodeの設定

  1. 拡張機能 PHP Debug をインストールする
    VSCode拡張機能php debug で検索、もしくは下記よりインストールする
    https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
  2. プロジェクト直下に .vscode/launch.json を作成する
    ⌘ + Shift + D でデバッグメニューを表示すると初回は launch.json を作る、みたいなリンクがあるのでクリックする
    プロジェクト直下に .vscode/launch.json が作成されることを確認
  3. php.ini にconfigurations.portの番号を指定

     zend_extension={xdebug.so までのフルパス}
    
     [PHP]
     xdebug.mode=coverage,develop,debug
     xdebug.discover_client_host=1
     xdebug.client_port=9003 ; .vscode/launch.json の configurations.port の値を貼り付ける
     xdebug.start_with_request=yes
    

    Xdebug2と3で設定値の名前が結構変わっているのでversionごとの違いは下記を参照

    xdebug.org

確認

適当なプログラムにbreakpointを設定して止まればOK

参考

xdebug.org

qiita.com

www.aiship.jp


株式会社エイルシステムではWebエンジニア・モバイルアプリエンジニアを募集しています。
実務経験がなくてもOKです。ご興味のある方は弊社HPよりご連絡ください。