そろそろソースコード単位で動きを追いたい年頃になって来ました。
Debugできるようにする
最初はこれ見てやろうとしたんですがレポジトリがどうのこうのとか言い出してよくわからなくなりました。
そもそも2014年というあたりで回れ右すべきだった。
いや流石にHomesteadさんはなんかあるやろと検索したらズバリなタイトルが出て来ましたのでこれを参考にしてみます。
PHP7.2にはXdebugがない?
上記資料では7.1だったんですが、Homesteadは7.2を指してるんですよね。
で、7.1のフォルダにはxdebugのiniファイルがあるんですが7.2にはありません。
なんでやねんって調べたらそれっぽいのが出て来ました。
php7.2に対応するxdebugはbeta版なので自分で設定する必要があると。
マジですか。
参考にして入れてみます。
$ sudo pecl install xdebug
# インストールされる
$ sudo vi /etc/php/7.2/mods-available/xdebug.ini
# 先頭に以下を追加
# zend_extension=/usr/lib/php/20170718/xdebug.so
$ cd /etc/php/7.2/fpm/conf.d/
$ sudo ln -s /etc/php/7.2/mods-available/xdebug.ini ./20-xdebug.ini
# シンボリックリンク作成
$ sudo service php7.2-fpm restart
# 再起動
あっさりできました。
改めて設定
iniファイルに追記して再起動します。
$ sudo vi /etc/php/7.2/fpm/conf.d/20-xdebug.ini
# 末尾に追記
# xdebug.idekey = "PHPSTORM"
$ sudo service php7.2-fpm restart
# また再起動
資料はWindowsだった
macだとどうなるんでしょう。
とりあえずこれを参考にして入れてみました。
$ php -v
PHP 7.0.27 (cli) (built: Jan 7 2018 19:44:58) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
入ってる……っぽい。
PhpStormの設定
Homesteadがphp7.2で、僕の環境だとphp7.0か7.1しかPhpStormには表示されてません。
が、とりあえずメジャーバージョンだけ揃ってれば動くようなので適当なバージョンを指定しておきます。
Interpreters
PhpStorm > Preferences...
- Languages & Frameworksを開いてPHPをクリック
- PHPのバージョンを選ぶ
- Interpreterの脇の『...』ボタンをクリック
- Default interpretersが開くので、左ウィンドウの『+』をクリックして新しいのを追加
- 名前を適当に決める
- PHP executableで、xdebugを設定したphpを選択する
- 参考までに、うちは
/usr/local/bin/php
でした(多分なんの参考にもならない)
- 参考までに、うちは
- OK
Server
PhpStorm > Preferences...
- Languages & Frameworksを開いてPHPを開く
- Serverをクリック
- PHPのバージョンを選ぶ
- 『+』をクリックして新しいサーバーを追加
- 名前を適当に決める
- HOSTを入力
- 下のチェックボックスをチェック
- プロジェクトファイルに対応する仮想環境のパスを入力
- OK
Debug Configurations
Run > Edit Configurations...
- 『+』をクリックして新しいデバッグ設定を追加
- 名前を適当に決める
- Serversを選択
- Ide keyにPHPSTORMを入力
- OK
設定完了したので実行
PhpStorm側で、窓の上にいる虫アイコンをクリック。
その後、URLにXDEBUG_SESSION_START=PHPSTORM
のパラメータを付けてHomesteadにアクセス。
一回アクセスしたらphp側でcookie全消しとかセッション切れとかしなければそのままDEBUGできる。
あとはその状態で、PHPファイルの適当なところにブレイクを入れると止まる。
やったー!
F8で同一ファイルの次の処理(Step Over)。
F7で処理内部に遷移する(Step in)。
option+command+RでF5(Visual Studio的表現)。
Force Step intoとかはよくわかりません。
ともあれデバッグできるようになりました。