concrete5 のアップデートで失敗してしまったときの対処法


アップグレードスクリプトのバグとアップグレード時の処理がタイム・アウトしてしまった可能性が考えられます。

バグの場合

バグであればどういう条件でこのバグが発生するか、concrete5 を新規でインストールしてからの変更がどのようなものかを検証し、再現する必要があります。

普段のアップデートでは問題が無いので、何か多くの方が行っていない concrete5 の設定の変更などがバグのトリガーになっていると思います。

どの設定を変更したからアップデートを失敗してしまったか、というのを再現手順のステップと concrete5 の GitHub か日本語フォーラムで報告してもらえば、治せるかどうか確認してくれると思います。

アップグレードタイムアウトの場合

アップグレード時の処理がタイム・アウトされてしまった可能性について説明します。

まず、ブラウザではなく、SSH から concrete5 の CLI を使ってアップデートを試み、成功すればタイムアウトが原因です。

PHP の max_execution_time が小さいと、これらのアップデートの時間が足りなくなり、ブラウザだと、最後までアップデートが走らない場合があります。

CLI でのアップデートの方法

/[c5 までのパス]/concrete/bin/concrete5 c5:update コマンドでアップデートをします。それがダメであれば --rerun オプションを使って、アップデート再度走らせます。 --after オプションを使うことで、アップデート前のバージョンを正しく指定してアップデートのスクリプトをすべて走らせることが可能です。



concrete/bin/concrete5 c5:update --rerun --after=8.2.1

サーバーが apache や nginx ユーザーとして実行している場合は
sudo -u apache か
sudo -u nginx を
つけて実行する必要があります。

開発者向けの参考情報

アップグレードの際、concrete5 では Migration スクリプトを走らせています。

concrete5 過去のバージョンからアップデートする際 concrete5 内で変更がある場合があります。データベースの構造が変わったり、管理画面のページが増えたり、デフォルトのページ属性が増えたりします。

それらの変更が各バージョンごとに、バージョンがリリースされた日付で変更を適用する PHP スクリプトが入っています。

参考までにそのスクリプトの場所は

/concrete/src/Uddater/Migrations/Migrations/

配下です。