エックスサーバーで最近お問い合わせが多いのですが、レンタルサーバーを使用しているとプラグインの有効化・無効化やアップデートでシステムエラーになることがあります。

プラグイン有効・無効やアップデート時にエラーが発生する理由

エラー発生時のログを確認すると次のようなエラーが発生しており、キャッシュ削除のタイミングがうまくいかないことが原因だと思われます。

Fatal error: require(): Failed opening required ‘/home/example/example.com/public_html/example/var/cache/prod/doctrine/orm/Proxies/__CG__EccubeEntityMasterWork.php’ (include_path=’.:/opt/php-7.4.33-2/data/pear’) in /home/example/example.com/public_html/example/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 204

一時的にシステムエラーになる場合もあれば、キャッシュの残り具合によっては、サイト全体がシステムエラーになって修復が必要な場合があります。

 

EC-CUBEプラグインシステムエラー

対策方法

1つの対策方法として、エックスサーバーのコントロールパネルで「Xアクセラレータ」の設定を確認してみてください。

Xアクセラレータ Ver.2が有効になっている場合、「Xアクセラレータ」を無効に変更することが考えられます。

Xアクセラレータ Ver.2が有効になっている場合、プラグイン操作時にエラーが発生する確率が高いです。プラグイン操作に関してはVer.1でも良さそうですが、意図せずコンテンツがキャッシュされると怖いので、弊社では無効推奨です。

(サーバー依存の問題のため、無効に変更しても完全に起きないとは言えませんが、弊社環境ではプラグイン操作時のエラーはほぼ発生しなくなりました)

エックスサーバーアクセラレーター

 

サーバー内部的なことは確認できませんが、「PHPプログラムの高速化」の弊害で、EC-CUBEのキャッシュファイルもアクセラレータでキャッシュされていて齟齬が発生するのではないかと考えられます。

単純に不具合の場合も

プラグインに不具合があってアップデートに失敗したり、あるいは本体のカスタマイズに不具合があってプラグイン操作がシステムエラーになるケースもあります。

ログから判断することはかなり難しいので、一度専門家に相談されることをおすすめします。

それでも解決しない場合バージョンアップも検討

プラグイン操作時にエラーが発生するかどうかはエックスサーバーの設定やEC-CUBEのバージョンにもよります。

4.0系や4.1系などの旧バージョンはこの問題が頻発していたバージョンですので、バージョンアップで解消できるかどうか一度ご相談ください。

弊社環境で確認したところでは、4.2系にアップデートして、かつXアクセラレータが無効であればエラーはほぼ発生しないと思われます。

また、4.2系であれば連続で有効・無効の切り替えを行わなければ、XアクセラレータがVer2であっても大丈夫でした。ただ、動的コンテンツが意図せずキャッシュされてしまうと怖いので弊社では無効を推奨します。

EC-CUBEバージョンアップ

システムエラーでサイトが開けなくなった場合

キャッシュ削除でシステムエラーが解消することがあります。

下記の記事を参考にキャッシュクリアを行ってみてください。

キャッシュをクリアする4つの方法

エラーログの内容

[2024-01-03T09:07:09.990701+09:00] admin.ERROR [xxxxx] [xxxxxx] [N/A] [Eccube\Log\Logger:log:64] – システムエラーが発生しました。 [“Failed opening required ‘/home/example/example.com/public_html/ecdemo/var/cache/prod/doctrine/orm/Proxies/__CG__EccubeEntityMasterWork.php’ (include_path=’.:/opt/php-8.1.22/data/pear’)”,”/home/example/example.com/public_html/ecdemo/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php”,197,”#0 /home/example/example.com/public_html/ecdemo/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php(109):

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ