2019年夏 さくらインターネットで concrete5 サイト運営中にエラーが突然出て困った方へ


さくらインターネットで PHP7.2 を設定していて、突然サイトに

```
Exception Occurred: /home/XXXXXXXXXX/www/XXXXXXXXXXX/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:1378 preg_match(): Compilation failed: invalid range in character class at offset 4 (2)
```

というエラーが出た方。

さくらインターネットが数ヶ月前からアナウンスしていた、
PHP7.2系のバージョンを、7.3 に自動移行したために発生したものである可能性が高いです。

驚かれている方もいらっしゃると思いますが、僕は、ちゃんと7/3 に自動アップグレードをするという告知を、さくらインターネットから、6/11 と　6/25 に受け取っていました。

```
　────────────────────────────────────
　・本メールは、さくらのレンタルサーバで、2019年6月17日時点で
    PHPバージョン7.2をご利用中のお客様へお送りしております。
　・本メールは送信専用のため、ご返信いただきましても回答できません。
　　お問い合わせは、会員メニューのお問い合わせフォームをご利用ください。
  ・システム管理者様以外がお受け取りになった際は転送いただけますと幸いです。
　────────────────────────────────────
会員ID     : xxxxxxxxxxxxxxxx
ご契約者名 : xxxxxxxxxxx 様

いつもさくらインターネットのサービスをご利用いただき誠にありがとうございます。

ご利用のさくらのレンタルサーバにおきまして、2019年7月3日（水）に
PHPのバージョンを7.2から「7.3」へ自動的に変更させていただきます。
```

以下対処法をまとめました。
concrete5 最新版 8.5.1 へのバージョンアップが必要です。

この記事は 2019/7/3 時点のものです。
（急いでまとめたので慎重に実行をお願います。）

PHP 5.6 を使い続けているユーザーは、PHP5.6 を継続使用可能なようですが、concrete5 8.5.1 へのアップグレードを強くおすすめします。


# concrete5  8.3.x〜8.5.0 までをお使いの方

一度、さくらインターネットのコントロールパネルに訪問し、「アプリケーションの設定」「PHP バージョン設定」より PHP 7.2 を選択することで、PHP 動作バージョンを 7.2 に戻すことが出来ます。

PHP 7.2 は、お使いの concrete5 が V8.3 以降であればエラーを回避できます。

**但し、さくらインターネットで PHP7.2 が使用できるのは8月までなので早急に8.5.1 へのアップグレードを計画・実施してください。**

concrete5 は PHP7.3 の動作は最新版の 8.5.1 以降のみしか動作しません。

- さくらのコントロールパネルで、一旦 PHP バージョンを PHP7.2 に設定。
- 現在のファイルやデータベースをバックアップ
- 8.5.1 へのアップグレード (具体的なステップは後述)
    - 8.3.x のサイトは先に 8.4.4 へのアップグレードが必要
- concrete5 8.5.1 へのアップグレード完了後さくらのコントロールパネルで PHP7.3 に切り替えて動作確認


# concrete5.7.x 〜 8.4.x までをお使いの方

ただし 5.7.x や 8.4.x 以前のバージョンをお使いの方は、一気にアップグレードできません。一度 8.4.4 までバージョンを上げる必要があります。

- さくらのコントロールパネルで、一旦 PHP バージョンを PHP7.2 に設定。
- 現在のファイルやデータベースをバックアップ
- まず、concrete5 8.4.4 へアップグレード (具体的なステップは後述)
- concrete 8.4.4 にアップグレードしてから 8.5.1 にアップグレード (具体的なステップは後述)（concrete5 8.5.2 がリリースされれば、シームレスにアップグレードできるはずです。）
- concrete5 8.5.1 へのアップグレード完了後さくらのコントロールパネルで PHP7.3 に切り替えて動作確認


# アップグレード手順

## STEP1: concrete5 バージョンの取得

- [concrete5 公式サイトのダウンロードページ](https://www.concrete5.org/developers/developer-downloads/) より 8.5.1 や 8.4.4 の ZIP ファイルをダウンロード。
- ダウンロードした ZIP ファイルを一旦解凍し、concrete フォルダだけを抽出
- サーバー上に上書きアップロード。
    - SSH が使用できる方は concrete フォルダのみを zip に圧縮してアップロード・解凍すると数分で作業できます。
    - 参考コマンド `unzip concrete.zip` (ファイル名が concrete5.zip だった場合)


## STEP2A: ブラウザからのアップグレード方法 (次の「SSH でアップグレード」を強くおすすめします)

- 自分の c5 サイトに訪問。アップグレードが実行されます。ユーザーの訪問によってアップグレードが実行されるため、何回か訪問していただかないといけないかも知れません。
- ログイン済みの場合「[自分の c5 サイト]/ccm/system/upgrade」 に訪問することでアップグレード作業を再開できます。


## STEP2B: SSH でアップグレード (ブラウザでうまくいかない場合 & おすすめ方法)

アップグレードは時には処理が重い場合があるため、SSH のコマンドラインツールを使って実行すると安全にアップグレード可能です。

さくらインターネットは、concrete5 が動くレンタルサーバープラン全てで SSH によるアクセスを許可しています。

さくら公式ヘルプ: [SSHについて](https://help.sakura.ad.jp/hc/ja/articles/206054152-SSH-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)


Windows をお使いの方は、SSH クライアントソフト (Poderosa や TerraTerm) などをお使いください。

Mac をお使いの方は Mac 標準の `ターミナル` というソフトで SSH 接続が可能です。 


項目	| 入力例
----|-----
ホスト | [初期ドメイン].sakura.ne.jp
アカウント |  アカウント名
パスフレーズ	| ********

Mac をお使いの方は以下のようにターミナルで入力すると接続できます。

```
$ ssh [アカウント]@[初期ドメイン].sakura.ne.jp [改行]
$ [パスワードを入力し改行]
```
※ $はユーザーは入力不要です。SSH 画面だと再現するための表現として使っています。


### アップグレード実行コマンド

```
$ cd [concrete5 が入っているディレクトリ] [改行] # concrete5 設置ディレクトリに移動
$ concrete/bin/concrete5 c5:update [改行]
[アップデートしますかという確認が現れる場合は「y」[改行]で実行]
```

あとは待つだけでアップグレードが完了します。

# トラブルシューティング

## アップグレードが失敗した場合

- バックアップしたファイル・DB でサイトを元に戻して再びアップグレードを試みてください。
- その時出たエラーの対処方法がわからない場合は[フォーラム](https://concrete5-japan.org/community/forums/)に投稿してください。

## アップグレードが完了しているのでエラーでアクセスできない

- インストールされたパッケージや自分で行った改造が最新版に対応していない場合があります。
- パッケージであれば、8.5.1 に対応した最新版がリリースされているか確認し、管理画面から最新版にアップデートできるか確認してください。
- 自分で行った改造が原因でエラーの意味がわからない時は[フォーラム](https://concrete5-japan.org/community/forums/)で質問してください。


この記事の解説で分かりづらいこと、こう書いてほしいことがあれば、フォラームの[この投稿](https://concrete5-japan.org/community/forums/chat/post-18289/)にコメントしてください。

以上