Contents Management System

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

concrete5

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

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

この記事を書いた人

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

セブ島在住の気ままな海外ノマドエンジニア。IT業界10年。テクニカルディレクター・エンジニア講師・ブリッジSEを経て今に至る。CMS concrete5エバンジェリスト。テックブログ以外も「磨耗しない人生の選択」や「海外生活」のライフスタイルについて発信。好きなものは肉とビール。

Read More

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

まあ、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にハマった話

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

「銀ねこアトリエ」のブログを定期購読しよう

Feedlyに登録する