PHPのビルドインサーバーを使ったデバッグ(Atom x Xdebug)

はじめまして。

数年のブランクを経てWebエンジニアの世界へ戻ることになりました。これを期に、見てるだけだったQiitaも使ってみようと思い、練習がてら。

前提条件

  • OS: macOS HighSierra
  • PHP: 7.0.27
  • Laravel: 5.5.24
  • エディタ: Atom 1.23.3

用意したもの

  • Xdebug

Homebrewでインストールしました。

$ brew install php70-xdebug
  • PHP-debug

AtomにPHP-debugをインストールしました。

Atom - PHP-debug
https://atom.io/packages/php-debug

Xdebugの設定

homebrewでインストールされたxdebugの設定ファイルはここ。

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

PHP-debugの説明の通り修正します。

[xdebug]
zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"
#ここは環境やバージョンに応じて変化すると思います。
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true

PHP-debugの設定

AtomのConfigファイルconfig.csonに下記を追記。

"php-debug":
  {
    ServerPort: 9000
    ServerAddress: "127.0.0.1"
  }

今回はリモートデバッグしないのでPath Mapは書きませんでした。

これでAtomの左下に追加されたPHP Debugってボタンをクリックするとデバッグウィンドウが表示されます。

適当にソースコードへブレイクポイントを仕掛けます。行番号の右側のをクリックすると、$\style{color:blue;}{\text{●}}$が表示され、ブレイクポイントが設定されました。

この状態でビルドインサーバーを起動。

$ php artisan serve

で、127.0.0.1:8000/****へアクセスします。ちゃんと止まります。うまくいきました。Xdebugがリッスンするポートとサーバーのポートは別でOKです(ここでちょっとハマった)。

未解決事象

しかし、何度かやっているうちにビルドインサーバーへアクセスするとLaravelのserver.phpが固まってしまう現象に直面。このときは、プロセス一覧からIDを見つけてkillして対応。

$ ps -rf | grep laravel

  501 20235 20226   0 11:14AM ttys000    0:00.00 grep laravel
  501 20221 20217   0 11:14AM ttys003    0:00.04 /usr/local/Cellar/php70/7.0.27_19/bin/php -S 127.0.0.1:8000 /Users/akagire/dev/laravel/server.php

$ kill 20221
#プロセスIDは時と共にに変化します...

結果的にはconfigに追記したphp-debugの設定を削除でうまくいきました。理由がわからないので気持ち悪いですが、今のところなんとか動いています。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.