PHP
Symfony
EC-CUBE4

EC-CUBE4系でプラグインインストール時にエラーが出た時の対処法

EC-CUBE4 になって、プラグインの管理方法が大きく変わりました。

これに伴い、共有レンタルサーバーなど、リソースの少ない環境では以下のような問題が発生する場合があります。


プラグインのインストール時に高負荷な状態が発生し、OOM Killerでhttpdのプロセスが殺される。そのため、プラグインのインストールが完了しない。

https://github.com/EC-CUBE/ec-cube/issues/4142


インストール時以外に、有効化/無効化時、アンインストール時にも発生します。

これらの処理が完了しない場合、以下のような状態となります


  • 「インストール完了」の表示になっても、「有効/設定」ボタンが表示されない

  • システムエラーになる

  • PHPエラー画面が表示される

  • レスポンスが十数分返ってこない


対処法

対処方法はケースバイケースになりますが、以下の順で試してみることをおすすめします


Symfony のキャッシュクリア

管理画面→コンテンツ管理→キャッシュ管理からキャッシュクリアする

管理画面が開かない場合は、以下のいずれかをお試しください。

(キャッシュの強制削除は自己責任で...)

## Symfony コマンドでのキャッシュクリア

bin/console cache:clear --no-warmup

## キャッシュの強制削除

rm -rf /path/to/ec-cube/var/cache/*


Composer クラスマップの再生成

こちら を参考に、 Composer コマンドをインストールしておいてください

php composer.phar dumpautoload

上記コマンド終了後、 Symfony のキャッシュクリアを実施してください


Composer install コマンドの再実行

php composer.phar install


コマンドラインでのプラグインの再インストール

管理画面からインストールに失敗しても、コマンドラインからインストールできる場合があります。

## クラスマップが壊れている場合は再生成(オプション)

php composer.phar dumpautoload

## エラーになっているプラグインを一旦削除
bin/console eccube:composer:remove ec-cube/<PluginCode>

## 再インストール
bin/console eccube:composer:require ec-cube/<PluginCode>

## 有効化
bin/console eccube:plugin:enable --code <PluginCode>

既に運用中の場合は、プラグインをアンインストールすることによりデータが削除されてしまう恐れがあります。必ずデータベースのバックアップを取得したあと、上記コマンドの実行をお願い致します。


何度か繰り返す

プラグインインストール/有効化/無効化 時のエラーは、確実に再現性のあるものではなく、うまくいく場合もあります。

何度か繰替えしてみることをおすすめします。

これらを実行しても解消しない場合は、エラーログやエラー画面のスクリーンショットとともにコメント覧にてお知らせください。