【EC CUBE3/EC CUBE4】オンラインショップでシステムエラーが出た時の対処法とは?




こんにちは、プロクラスの中山です。

今日はEC CUBEを使ったオンラインショップで起こったエラーの調査方法と対処についてのご紹介です。
できたら遭遇したくない画面です。
こんな表示が出てしまった方、「いやいや、サイト管理者は私ですが…」という方は参考にしてみてください。

オンラインショップのエラーとは?

EC CUBEをお使いの場合は、先ほどの画像のような表示が画面上に表示されるかと思います。
それ以外のオンラインショップシステム、例えばWordPressであれば「Welcart」「WooCommerce」などをお使いの場合もあるかと思います。

WordPressであれば、WordPressのデバッグモードをONにして画面上に「どこのプログラムでエラーが起こっているか」を見ていただくことができます。
または、サーバー自体がエラーを起こしている場合は、サーバー側のエラーログなどを取得してみましょう。

画面上にどんなエラーが表示されているか確認して、原因がどこかをチェックするようにしましょう。

「403エラー」が出た時は?

例えば「403エラー」という表示であれば、「壊れているからエラーが発生している」のではなく「サーバー側がセキュリティなどの事情でわざとストップしました」という内容です。
403エラーの場合は、サーバー側のセキュリティ機能(WAF設定)などをチェックしてみてくださいね!

ロリポップレンタルサーバーで403エラーが出ている場合、サーバーコントロールパネルで詳細を見ることができます。

上記、アクセス元IPアドレスが自分のものか調べていただき、除外するように設定を行う必要がありますのでご注意ください。
WordPressを使用している場合は「サイトガード」というプラグインが除外設定をしてくれるので、便利です。

しかし、冒頭の画像の「EC CUBE」が出力している「システムエラーが発生しました」の画面は403エラーではないので、WAFが原因ではないようです。
うーむ、困りましたね。

そんな時は、EC CUBEのエラーログを見ましょう!!

EC CUBEの「エラー」の確認方法とは?

EC CUBEのシステムに元々「エラーログ」を出力する機能が入っています。
EC CUBE3とEC CUBE4を利用されている方であれば、管理画面にログインしていただくと「設定」の中に「システム情報設定」または「システム設定」という項目があるかと思います。

EC CUBE3を利用されている方は、その中の「EC CUBEログ表示」へ進みましょう。
EC CUBE4の場合は「ログ表示」という名称です。

50行表示されるようになっていますが、もっと古い情報までたくさん表示することもできます。また、こちらは「front-(日付).log」となっていますが、管理画面用のログなど他のものもあるので、エラー表示が発生したタイミングのものを探しましょう!

エラーログの内容

早速ログをダウンロードしてチェックしてみましょう。
うーん、なんじゃこりゃ。読むのもしんどいですね!!

エラーが発生したタイミングのもの以外は見なくても良いので、この中から「システムエラー」という文字列を検索してみましょう。
コントロールキー+Fなどで検索窓が表示されるソフトが多いと思いますので、調べてみてください。

エラーログの該当箇所が見つかりました!

どうやらこの部分でエラー発生の内容が説明されているようですね。
原因について書かれているところだけ、ざっくりと翻訳しましょう。

[2024-07-04 06:32:42] front.ERROR [N/A] [791c50e] [anon.] [Eccube\Log\Logger:log:66] – システムエラーが発生しました。 [“Error: Allowed memory size of 130000000 bytes exhausted (tried to allocate 15000000 bytes)“,”/home/users/2/*****/vendor/symfony/cache/Traits/FilesystemTrait.php”,100,”#0 {main}”] [GET, /shop/products/list?category_id=00, 12.34.567.89, NULL, Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/123.45 (KHTML, like Gecko) Chrome/123.4.5678.90 Mobile Safari/123.45 (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html)]

Error: Allowed memory size of 130000000 bytes exhausted (tried to allocate 15000000 bytes)
⇒英語が難しい時はGoogle翻訳に放り込みましょう。
頑張ったんだけど、130000000バイトまでのメモリ制限を超えちゃいました。

・・・そうか、すまんなロリポップ。

知らず知らずのうちに、サーバーに無理をさせていたようです。
レンタルサーバーはみんなで使うものなので、制限が設けられています。今回はオンラインショップの商品の「規格」と呼ばれる選択肢が多すぎて、「読み込む情報が多すぎるので頭がパンクしちゃいました」ということだそうです。

ここからの対処法についてはレンタルサーバーによって異なります。
「サーバー名 memory_limit」などでGoogle検索、またはChat GPTさんに質問して対処法を調べてみてください。「.htaccessというファイルで書き換えられるようにしましょう」など、ブログでやり方を説明してくださっている方もたくさんおられますよ!

エラーの解決方法

というわけで、今回の原因はメモリーの使用量制限ということがわかりました。
限界値を増やすことで、エラーの解消ができました。

エラーログの内容によってはプログラムの記述が間違っているせい等、原因が異なる方も多いと思いますので、ほんの一例ですが…
何かプログラム間違いがある場合はどこがおかしいのかをエラーログで確認し、書き直すか作った人に問い合わせてみるようにしましょうね。

と、いうわけで解決です。マニアックな内容なので、自分で開発をしていない人にはさっぱりな内容かもしれませんね。。
エラーログを作った人に渡すだけでも役に立つと思いますので、困ったことがあった場合は参考にしながら解決に向けて動いていただければと思います!

そもそも、エラーが出なければいいんですけどね…!
それではまた 🙂