EC-CUBE3でPHPバージョンを上げると崩壊するプルダウンメニュー対応

公開 | 更新 
図2.EC-CUBE3管理ページメニュー崩壊

EC-CUBE3 とWordPressが同居しているレンタルサーバで、不思慮に PHP 設定を7.1から 7.4 へ上げたところ、 EC-CUBE3 の PHP 要件を逸脱してしまい、 プルダウン メニューが 崩れ てしまう不具合に遭遇したので対策しました。

EC-CUBE3をPHP7.4で動かしてしまうと

WordPressの管理画面でPHPのバージョンが古いとの警告から、何気なくレンタルサーバの管理画面でPHPのバージョンをそれまでの7.1から7.4へ移行させたのが、事の始まり。

WordPressはそれで良いのでしょうが、同じWebインスタンスに同居しているEC-CUBE3のサイトがおかしなことに。ページ上に収まっているはずのプルダウンメニューが展開されて表示が崩れていました。

図1.ページ上プルダウンメニュー崩壊

図1.ページ上プルダウンメニュー崩壊

EC-CUBE3の管理ページに入るも、こちらもメインメニューの表示が崩れていました。

図2.EC-CUBE3管理ページメニュー崩壊

図2.EC-CUBE3管理ページメニュー崩壊

EC-CUBEとPHPのバージョン要件

EC-CUBE開発ドキュメントを調べてみると、EC-CUBE各バージョンのPHP要件は以下の通りで、現在使用しているEC-CUBE3.0.13でサポートされるのは、PHP7.1までということになります。

PHP7.4での動作をサポートする4系へのアップグレードは、それはもうほぼ別のシステムと言う変更規模であり、データベース構造すら異なるようで非現実的。

そしてレンタルサーバのPHP設定は、巻き戻し不能でダウングレード不能なことが通例です。

図3.ロリポップサーバのPHP設定

図3.ロリポップサーバのPHP設定

Twigを修正して対策

一見詰んだかに見えましたが、EC-CUBE3のGitHubページのコメントの中に、その解決策はありました。

それはTwigファイルの1つ、 /vendor/twig/twig/lib/Twig/Lexer.php171 行目を、

次のように修正するというものでした。

これならレンタルサーバでも触ることができるので、早速修正しました。

図4.Lexer.phpファイルを修正

図4.Lexer.phpファイルを修正

Twigキャッシュを削除して反映

Twigを修正してもキャッシュを削除しない限り、その内容は反映されません。

EC-CUBE3管理ページの壊れているメインメニューを、 コンテンツ管理→キャッシュ管理 と辿って、 twig にチェックを入れて キャッシュ削除 を実行します。

図5.Twigキャッシュを削除する

図5.Twigキャッシュを削除する

Twigキャッシュの削除後、即そのページのメインメニューも元に戻りました。

図6.キャッシュ削除後即解消

図6.キャッシュ削除後即解消

もちろん、EC-CUBE3サイト側も元に戻っています。

図7.ページ上部プルダウンも正常化

図7.ページ上部プルダウンも正常化


created by Rinker
¥3,326 (2024/02/25 20:41:28時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA