Craft CMS を 3.4.29.1 から 3.5.0-RC1.1 にアップデートしたときに発生した Undefined index: siteSettings エラーへの対処法

2020-07-23
4分で読了
更新: 2025-12-14

目次

昨日、Craft CMS 3.5.0-RC1 がリリースされました。

Craft CMS の Beta や RC 版を利用したときは、 composer.json の 中の "require" の "craftcms/cms" のバージョン番号を手動で書き換えてあげる必要があります。

"craftcms/cms": "^3.5.0-RC1.1",

その後に composer update コマンドを走らせれば OK です。

composer update の処理が終わったら、ブラウザで管理画面にアクセスして「 Finish Up 」ボタンをクリック、その後に「Continue」ボタンをクリックすれば OK なはずです。しかし、今回このブログをアップデートするとき、Finish Up 中のマイグレーションで下記のエラーが発生しました。

yii\base\ErrorException: Undefined index: siteSettings

Migration: craft\migrations\m200620_230205_field_layout_changes

Output:

> add column elements text AFTER name to table {{%fieldlayouttabs}} ... done (time: 0.247s)
> drop column titleLabel from table {{%entrytypes}} ... done (time: 0.009s)
Exception: Undefined index: siteSettings (/...../vendor/craftcms/cms/src/services/Sections.php:606)
(以下略)

調べてみたところ、Project Config の機能が影響している模様。

もともとこのブログでは Project Config は使っていなかったので、 config/general.php には下記のように書いてあります。

'useProjectConfigFile' => false,

したがって、まずは下記のコマンドで Project Config の設定をきれいにします。

./craft project-config/rebuild

その後、もう一度管理画面にアクセスすれば OK ... というわけには行きませんので要注意です!

先程のエラーメッセージの先頭で、

> add column elements text AFTER name to table {{%fieldlayouttabs}} ... done (time: 0.247s)
> drop column titleLabel from table {{%entrytypes}} ... done (time: 0.009s)

とありますが、もしもう一度管理画面にアクセスすると、この部分の処理でエラーになります。

つまり、「fieldlayouttabs テーブルには既に elements カラムがあるよ!」「entrytypes テーブルに titleLabel カラムなんてないよ!」と言われてしまうわけです。

したがって、まずは phpMyAdmin などでデータベースにアクセスして、fieldlayouttabs テーブルから elements カラムを削除、entrytypes テーブルに titleLabel カラムを追加しておく必要があります。

その後、管理画面にアクセスして「Finish Up」「Continue」と進めば All done! です。

以上です。

この記事をシェア

この記事を書いた人

Roy Okuwaki

「かたつむりくんのWWW」を運営している Roy Okuwaki(tinybeans)です。bit part 合同会社 代表社員。2007年から、Movable Type や Craft CMS などの CMS、Web 開発、AI ツールの使い方について書いています。

プロフィールを見る →

関連記事