mac + VisualStudioCodeでxdebugを使用したlaravelのデバッグ環境を構築したので、手順をまとめました。 homesteadを使用したものは過去に記事にしているのですが、今回はそれを使用しないでのやり方になります。 xdebugはbrewコマンドではなくpeclを使用してインストールを行いました。

homesteadを使用したデバッグ環境構築手順はこちらを参照してください。 laravel + homestead + xdebugの開発環境構築手順

ググって調べたのですが、出てきた記事の同じやり方だとエラーが出ました。 色々試したので、php70とphp71が混ざっちゃってます。

最終的には解決できたので、 当時発生したエラーも含めてまとめていきます。

エラー内容

$ brew install homebrew/php/php70-xdebug
Error: homebrew/php was deprecated. This tap is now empty as all its formulae were migrated.
$ brew install php70-xdebug
Error: No available formula with the name "php70-xdebug"
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
$ brew tap homebrew/php
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
certbot

Error: homebrew/php was deprecated. This tap is now empty as all its formulae were migrated.
$ brew search php71-xdebug
No formula or cask found for "php71-xdebug".
Closed pull requests:
php71: migrate to homebrew/core (https://github.com/Homebrew/homebrew-php/pull/4798)
enchant 2.2.0 (https://github.com/Homebrew/homebrew-core/pull/21807)
Add PHP 7.2.0-alpha.1 core formula (php72) (https://github.com/Homebrew/homebrew-php/pull/4211)
php71-xdebug 2.5.0RC1 - Fixes Segfault in code coverage issue (https://github.com/Homebrew/homebrew-php/pull/3788)
Add php71-xdebug (new formula) (https://github.com/Homebrew/homebrew-php/pull/3345)
Xdebug 2.4.1 for PHP 7.1 (https://github.com/Homebrew/homebrew-php/pull/3446)
Add PHP 7.1.0-alpha.1 core formula (php71) (https://github.com/Homebrew/homebrew-php/pull/3274)
Enable phpdbg by default (https://github.com/Homebrew/homebrew-php/pull/3278)
$ brew install homebrew/core/php71-xdebug
Error: No available formula with the name "homebrew/core/php71-xdebug"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.

調べると、homebrew/phpのリポジトリがhomebrew/coreに移動したみたいです。

しかし、結局brewだと上手くインストールできませんでした。

対応

そこで、pecl(ピクル)というものを見つけたので、こちらでxdebugをインストールすることにしました。

peclをインストール

まずはmacにpeclをインストールする手順からです。

$ brew install php71 --with-pear
$ echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.bash_profile
$ echo 'export LDFLAGS="-L/usr/local/opt/php@7.1/lib"' >> ~/.bash_profile
$ echo 'export CPPFLAGS="-I/usr/local/opt/php@7.1/include"' >> ~/.bash_profile
$ source ~/.bash_profile
$ which pecl
/usr/local/opt/php@7.1/bin/pecl

xdebugのインストール

$ pecl install xdebug

このコマンドで無事xdebugをインストールできました。

php.iniの編集

xdebugの設定をしていきます。 /etc/php.iniにこの行を追加します。

zend_extension="/usr/local/Cellar/php@7.1/7.1.21/pecl/20160303/xdebug.so"

↑こちらのパスはバージョンにより変わりますので、環境に合わせてパスを設定してください。

xdebugの設定

xdebugの設定は別設定ファイルに切り分けました。 ポート番号は9002にしました。

/usr/local/etc/php/7.1/conf.d/ext-xdebug.ini

[xdebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9002
xdebug.max_nesting_level = 512

xdebugの確認

設定が終わったら設定が反映されているか確認します。 xdebugの設定がされていれば成功です。

$ php -i | grep xdebug

VSCodeの設定

次に、VSCodeの設定を行います。 launch.jsonを以下のように設定してください。

{
  // IntelliSense を使用して利用可能な属性を学べます。
  // 既存の属性の説明をホバーして表示します。
  // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9002
    },
    {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9002
    }
  ]
}

サーバ起動

VSCodeの設定も終わったらサーバを起動。

$ php artisan serve

アクセス

VSCodeでブレークポイントを設定して、デバッグを実行します。 その後ブラウザやPostmanなどのツールでアクセスすると、デバッグが開始されます。

参考