環境
# | バージョン |
---|---|
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のバージョンは異なります。
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
にあります。
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
としました。
<?php
$cwd = getcwd();
$output = shell_exec( $cwd . '/bin/console server:run');
echo "<pre>$output</pre>";
?>
PHP DEBUG(launch.json)の設定
VSCodeのデバッグタブをクリックすると左上に歯車アイコンがあるのでクリックします。すると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.json
のname
に指定した名前が表示されるので、選択して、実行アイコンををクリックするとサーバが起動します。
起動中に何度かDeprecated例外が発生して不安になりますが、無視して問題ない(?)ようです。操作パネルで「続行」します。
例外の例
操作パネル
無視する方法
デフォルトだとEverythingにチェックが入っているので外します。
以下の表示がでれば無事に待ち受け状態になりました。
任意の行にブレークポイントを設定して変数など確認できます。(ルーティング処理でも例外発生します)
おつかれさまでした。m(_ _)m