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などのツールでアクセスすると、デバッグが開始されます。