0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeでphpをデバッグする

Last updated at Posted at 2020-09-13

環境
初書:2020/09/13
PC:macOS 10.15.6
php 7.4.9
xdebug 2.9.6

前置き

PHPでもデバッグしたい!という事で、デバッグする方法を探してみた。

前提

peclが利用可能な環境・vscodeがインストール済み

debugをインストールする

PHP debug

vscodeの拡張機能から、PHP Debugをインストールする
(publisher:Felix Becker。他の人のでも動くかは未検証)

xdebug

ターミナルから、

% pecl install xdebug

を実行し、xdebugをインストール
% pecl listを実行し、xdebugが表示されればインストールは完了

php.iniを設定する

% vim /usr/local/etc/php/7.4/php.ini

(※phpのバージョン及びphp.iniの場所によって座標は変更する。)
を実行し、以下のコードを追加する(一番上に書き足しても動く)

zend_extension="/usr/local/Cellar/php/7.4.9/pecl/20190902/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port = 8080

(zend_extensionには、xdebugをインストールした際にInstalling '(略)'と記載されているので、その値。
xdebug.remote_portには、普段phpを立てる際のポート番号を設定する)

2020/09/15 追記
各項目の説明をしてくれているサイトをがあったので:[PHP] Xdebug のリモートデバッグ、理解していますか?

vimの操作覚えてないのでメモ:Vim初心者のための基本的な操作方法のまとめ

vscodeを設定する

vscodeのデバッグ画面(command + shift + D)を開き、上部にある歯車のマークをおし、launch.jsonを開く
"port"欄を、xdebug.remote_portと同じ値にする

phpを実行する

設定は終わったので、動作するか確認する
vscodeのphpファイルで適当にブレークポイントを入れ、下記を実行する

% php -S XXXX:8080

(XXXX及び8080は自身の環境に応じて変更する)
その後、該当ページにアクセスし、ブレークポイントで止まれば完了する。

終わりに

こちらの環境では、ブレークポイントで止まるものの、何行目で止まっているのかの表示がされないのでもしかしたらどこかで設定ミスがあるかもしれない。
また、デバッグの設定は過去に一度断念しているらしく、一部設定がしてあったり、インストールされていたりしたので、もしかしたら上記設定以外にも必要かもしれないが、覚えていない。。

2020/09/15 追記
xdebugは、var_dumpの表示方法を変えるシステムが存在しているらしく、出力が少し変わった。
もし気になる場合はautostartにしない方がいいかもしれない。

参考サイト:

Visual Studio CodeとXdebugでPHPのデバッグ環境を構築する
[XAMPP Mac]VSCodeでPHPのXdebugを使いデバッグ!しかしブレークポイントが止まらない

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?