EC-CUBE3でphp7.3以降に対応させる方法

EC-CUBE Advent Calendar 2021 9日目の記事です。

EC-CUBE3では公開当初php5.3〜7.1までしか対応しておらず、最近のレンタルサーバではphp7.3以上しか利用できないというケースが増えています。

また、レンタルサーバによっては事前アナウンスはありますが、強制的にphp7.4に変更されたりする時もあります。

そこで、php7.3以降でも動作する対応方法をご紹介します。

php7.3以降の対応方法

前提条件として最新のEC-CUBE3系で説明しますが、それ以外をお使いの方でも恐らく動作すると思います。

EC-CUBE3系をお使いの方で何も対応せずにphp7.3にすると、selectタグが正常に動作されない現象が発生します。

  • php7.2以下

f:id:amidaike:20211209143610p:plain

  • php7.3以上

f:id:amidaike:20211209143639p:plain

こちらを対応するにはTwigのバージョンを1.41.0以上にする必要があります。

導入方法ですがMac及びLinuxを対象に説明しますが、レンタルサーバ上で対応する場合、SSHでログイン出来る環境を前提にしています。

  • composer.pharファイルの取得

EC-CUBEが保存されているディレクトリ まで移動し、以下のコマンドを実行します。

curl -OL https://getcomposer.org/download/1.10.23/composer.phar
  • Twigのインストール

twigをインストールします。以下のコマンドを実行します。時間がかかるため気長にお待ちください。

php composer.phar require --ignore-platform-reqs twig/twig "1.41.0"

以上でphp7.3以降でも問題なく動作されるようになります。

もし、SSHが利用できないという方は推奨はしていませんが、下記ファイルを書き換えることでも対応可能です。

  • vendor/twig/twig/lib/Twig/Lexer.php

174行目にある、

if (isset($this->positions[2][$this->position][0])) {
    $text = rtrim($text);
}

if (isset($this->positions[2][$this->position][0]) && ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0])) {
    $text = rtrim($text);
}

に変更してください。 こちらの方法で対応された方は必ず管理画面のキャッシュ管理よりキャッシュ削除をしてください。

以上でphp7.3以降の対応となりますので、お困りの方は是非お試しください。