去年レンタルサーバー(さくら)がの PHP のバージョンが勝手にアップグレードしてサイトが見れなくなってしまったことがあります。concrete5 8.2 では php7.2 で予約語のせいで動かなくなったみたいです。
そこで、concrete5 8.2 を php7.2 に対応する方法を紹介します。
かみーゆ/フロントエンドエンジニア
結論、アップグレードすれば良い
まあ、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() の取り扱いが変わっているそう。
結構これで判定しているところあるからやばいね笑
今更だけど、もっと型に厳格にコード書かないといけないなと反省しました。