さくらレンサバで concrete5 8系を使うなら最新 Ver に Upgrade しとけ!

さくらレンサバで concrete5 8系を使うなら最新 Ver に Upgrade しとけ!

concrete5

去年レンタルサーバー(さくら)がの PHP のバージョンが勝手にアップグレードしてサイトが見れなくなってしまったことがあります。concrete5 8.2 では php7.2 で予約語のせいで動かなくなったみたいです。

そこで、concrete5 8.2 を php7.2 に対応する方法を紹介します。

この記事を書いた人

かみーゆ/フロントエンドエンジニア

資金ゼロからフィリピンで起業した海外ノマドエンジニア。IT業界10年以上でテクニカルディレクター(技術責任者)・エンジニア講師・ブリッジSEを経てLenzTechnologies Inc.を設立し、代表を務める。CMS concreteCMSエバンジェリスト。テックブログ以外も「磨耗しない人生」や「海外ノマド」のライフスタイルについて発信。好きなものは肉とハイボール。

結論、アップグレードすれば良い

まあ、concrete5 8.2 系以上は早い話アップグレードすれば大丈夫です。
concrete5の最新版を落としてきて、以下ファイルを上書きするだけでオッケーです。

  • composer.json
  • composer.lock
  • /concrete

くれぐれも言いますが、concrete5 をカスタマイズする時は絶対/concrete内をカスタマイズしてはいけません。このフォルダはコアで汚染されると大ごとです。 /application 内にカスタマイズしたいファイルやディレクトリなどをコピーしてカスタマイズして置くとオーバーライドされます。

ただ、自作のブロックやコントローラがきちんと新しいバージョンで動くか不安ですよね。concrete5 は WordPress みたくリファレンスがもりもりあるわけではありませんので、困ったときは私はコンクリートファイブジャパンの代表・菱川さんのブログか、本家のリファレンス(English)か、Katzさんのブログを参考にしています。
たまにググりきれない時は、致し方なくコア(concreteディレクトリ内)を漁って作っていることもあります。
なので、オラオラとカスタマイズした自分のサイトが下手したら動かなくなるかもしれないので、容易にアップグレードというわけには行きません。

現サイトのデータを落としてきて、ローカルに構築

Vagrant で php7.2 環境でインストールするとやはり以下のエラー。

(E_COMPILE_ERROR)
Cannot use Concrete\Core\Foundation\Object as Object because 'Object' is a special class name

なので、一旦 Vagrant の php を 7.1 ダウングレードして、concrete5 をアップグレード。
concrete5 を 8.4系(現時点の最新)にアップグレード。
Vagrant の php を 7.2 にアップグレードして確認。

問題なく、アップグレードできました。ほ。

まとめ

concrete5 8系をお使いの方で、レンサバのセキュリティ問題で php が突然アップグレードして私のようにびっくりしている人、困っている人もいると思います。
解決方法はアップグレードのみです。
カスタマイズ入れている人、特殊なテーマ・ブロックを使っている人は慎重にやった方がいいとは思います。
参考にしていただければと思います。
最後まで、お読みいただきありがとうございました。

追記 : php7.2 の count() の取り扱いに注意

数日経つと、サイトにエラー出で表示されとらんやん笑

あとで調べて見ると、php7.2の count() の取り扱いが変わっているそう。
結構これで判定しているところあるからやばいね笑

PHP7.2のcountにハマった話

今更だけど、もっと型に厳格にコード書かないといけないなと反省しました。