TAMINIF’s blog

京都在住のWebエンジニア。iOSアプリもやってます。勉強会にも参加してます。最近はマネージャー色強め

Mac + PHP + Atom + php-debugでステップデバッグを実現する

PHPの開発をMacBookProで行っています。
重いソフトを入れたくないという理由から、エディタのAtomでコードを書いています。

エディタでもステップデバッグをやりたいと思って調査してみたところ、Atomでもプラグインを入れればできることが分かりました。
f:id:taminif:20151018210430g:plain

事前準備

PHPでステップデバッグを行うためにはXdebugが必要です。
ターミナルからXdebugをインストールする場合、phpizeを使用する必要があります。phpizeをスムーズに動作させるにあたって下記二つのインストールが必要になります。過去に下記二つをインストールしている場合は事前準備は不要です。

Xcode Command Line Toolsのインストール

ターミナルから、下記コマンドを実行します。

xcode-select --install
・autoconfのインストール

ターミナルから、下記コマンドを実行します。

brew install autoconf

Xdebugをダウンロード

http://xdebug.org/docs/install
上記よりダウンロードします。
取得したファイルを解凍し、ターミナルでダウンロードした場所に移動します。
移動先で、phpizeを実行します。
ターミナルでphpizeと打ち込んでエンターを押せば実行されます。

phpize

実行完了後、下記の順番でそれぞれ実行していきます。

./configure --enable-xdebug
make
make install

同階層のmoduleディレクトリにxdebug.soができていることを確認します。

xdebug.soを下記パスに移動します。

/usr/lib/php/extensions/no-debug-non-zts-20121212

これで、Xdebugを読み込む準備が完了しました。

Xdebugを使用可能にする

php.iniに下記を記述します。
php.iniはetc以下にあります。(ない場合はphp.ini.defaultをコピーして作成してください。)
既にxdebug.〜部分が存在する場合はそこをコメントアウトして記述してください。

zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_autostart=true
# etcへの移動方法
cd /etc
# php.iniのコピー方法
cp /etc/php.ini.default /etc/php.ini

実行できない場合は、下記で管理者権限で実行してください。

# パスワードが必要になります。
sudo cp /etc/php.ini.default /etc/php.ini


これで、apacheを再起動することでXdebugが使用できるようになります。(下記コマンド)
phpinfoなどでXdebugが表示されていることを確認してください。

sudo apachectl restart

Atomphp-debugをインストールする

環境設定 → installから、テキストボックスに「php-debug」と入力し、php-debugをインストールします。
インストール後、Atomを再起動し、packageのphp-debugから「Toggle Debugging」を選択します。

ステップデバッグの実行

PHPファイルを開き、breakpointを設定する行で右クリック → php-debug → 「Toggle Breakpoint」で設定できます。
ブラウザやターミナルなどでphpを実行すると、設定したbreakpointで変数の確認が出来ます。

ショートカットでの操作

alt + F5で次のbreakpointまで実行
alt + F6でステップオーバー
alt + F7でステップイン
alt + F8でステップアウトが可能です。


ステップデバッグをしながらの開発は効率を大きく上げるものですので
気になる方は試してみてください。