xdebug
PHP7
VSCode
PHP7.2
EC-CUBE4

[EC-CUBE4]VSCode+PHP Debug(xdebug)でEC-CUBE4をデバッグする(ブレークポイント、ステップ実行とか)


環境

#
バージョン

OS
Ubuntu 18.04(LTS)

EC-CUBE
4.0.2

PHP
7.2.18

PHPライブラリ・拡張
システム要件(公式)を参照

xdebug
2.7.2 stable

VSCode
1.33.1

PHP DEBUG
※VSCodeのxdebug拡張
1.13.0

HTTPサーバ
簡易サーバ
EC-CUBE(の開発フレームワークSymfony)に同梱されている。
bin/console server:run で起動


やりたいこと


  • ローカル開発環境にセットアップしたEC-CUBE4のデバッグ

  • VSCode + PHP Debug拡張を利用

例のごとく整理された情報が皆無を発見できない。。微妙に近い情報を徘徊しながら直感を頼りに試行錯誤してなんとかできました。

普段、EC-CUBEはもちろんPHPも使わない身としては苦行すぎる。(T_T)

VSCode凄い!というのがわかったのは収穫!)


手順

以下のような手順を踏みます。肝となる起動スクリプトの作成launch.json以外はごく一般的な手順です。


  • PHP + ECCUBEセットアップ

  • XDEBUGのインストール

  • VSCODEのインストール

  • PHP DEBUG拡張のインストール

  • 起動スクリプトの作成

  • PHP DEBUG(launch.json)の設定

  • 実行


PHP + ECCUBEセットアップ

インストール手順(公式サイト)に従いします。

PHP環境構築は以下の記事を参考にして頂くとはやいかもです。

[EC-CUBE4]ワンライナー/必要なPHP拡張ライブラリのインストール - Qiita


XDEBUGのインストール

以下の記事を参考にさせて頂きました。php.iniやphp,xdebug.soのバージョンは異なります。

Xdebugのインストール – ABC Blog


Developper Packageのインストール

sudo apt install php7.2-dev


XDebugのインストール

sudo pecl install xdebug


PHP.ini設定

php.iniに以下を追記します。centosだと /etc/php.iniですが、ubuntuは/etc/php/7.2/cli/php.iniにあります。


/etc/php/7.2/cli/php.ini

zend_extension="/usr/lib/php/20170718/xdebug.so"    locate xdebug.so

; see http://xdebug.org/docs/all_settings
html_errors=on
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000



確認

$ php -i | grep xdebug 

xdebug
xdebug support => enabled
xdebug.auto_trace => Off => Off
~以下、省略~


VSCODEのインストール

公式サイトからダウンロードしてインストールします。


  • PHP DEBUG拡張のインストール


起動スクリプトの作成

以下のサーバ起動用のPHPスクリプトを作成します。

場所は任意でが以下はEC-CUBEを配置したルートディレクトリ直下に作成した例です。

スクリプト名(後述するlaunch.jsonで指定)も任意ですが、runserver.phpとしました。


/runserver.php

<?php

$cwd = getcwd();
$output = shell_exec( $cwd . '/bin/console server:run');
echo "<pre>$output</pre>";
?>


PHP DEBUG(launch.json)の設定

VSCodeのデバッグタブをクリックすると左上に歯車アイコンがあるのでクリックします。するとlaunch.jsonが開くので編集します。


launch.json

{

"version": "0.2.0",
"configurations": [
{
"name": "Custom Xdebug setting",
"type": "php",
"request": "launch",
"port": 9000,
"program": "${workspaceRoot}/runserver.php",
"cwd": "${workspaceRoot}"
}
]
}


実行

以上で設定は完了です。

VSCodeのデバッグタブの構成リストにlaunch.jsonnameに指定した名前が表示されるので、選択して、実行アイコンををクリックするとサーバが起動します。

起動中に何度かDeprecated例外が発生して不安になりますが、無視して問題ない(?)ようです。操作パネルで「続行」します。

例外の例



操作パネル



無視する方法

デフォルトだとEverythingにチェックが入っているので外します。

以下の表示がでれば無事に待ち受け状態になりました。

任意の行にブレークポイントを設定して変数など確認できます。(ルーティング処理でも例外発生します)

おつかれさまでした。m(_ _)m