Craft 2からCraft 3へアップグレード

このブログを巷で話題のCraft CMSで運用しようかと迷っていて、9月頃から記事をインポートして触っています。(その前に肝心の記事を書いていないのですが...。)

当時Craft 3の正式リリースが決まっていなかったのでCraft 2をインストールしていたのですが、「Dot All 2017」でCraft 3が2018年4月4日リリースと発表されたので、Craft 3へアップグレードしてみることにしました。

Craft CMSのアップグレードは初めてで、難しいのか? 上手くいくのか?と不安でしたが、公式のUpgrading from Craft 2に沿って作業を行ったところ、途中でエラーが出たものの無事アップグレードを完了させることができました。
Craft 3アップグレード後のシステムレポート画面

遭遇したエラーと解決法

サーバーはさくらのVPS(CentOS 6.x)です。最初に出たのは以下のエラーでした。

/path/to/documentroot/public/cpresources doesn't exist or isn't writable by PHP. Please fix that.

これはpublic/cpresourcesが無いだけでしたので、ディレクトリを作成しパーミッションの設定を行いました。

次にcomposer.jsonに関するエラーが出ました。

yii\base\ErrorException: file_put_contents(/path/to/documentroot/craft/composer.json): failed to open stream: Permission denied

これも単なるパーミッションの問題なので設定を修正しました。

さらにデータベースのアップグレード処理中にエラーが出ました。これは気分的に嫌な感じでした。メモをするのを忘れてしまいましたが、「SQL error while update to 3 from 2.6.2960」に書かれている以下の内容だったと思います。

Column not found: 1054 Unknown column 'version' in 'field list' The SQL being executed was: SELECT version AS name, applyTime FROM crf_migrations WHERE pluginId IS NULL ORDER BY name DESC

一旦データベースの内容をバックアップから復元してCraft 2にログインしたところ最新版になっていなかったのでボタンを押してCraft 2の最新版にアップグレード。続いて再度Craft 3へのアップグレードを試したところ、無事データベースのアップグレード処理が完了しました。

プラグインの更新

Twitterでつぶやいただけで記事にはしていないのですが、記事中の見出しレベルを上げたり下げたりできるプラグインを試作していました。(Movable Typeでは「Heading Level Converter」を使っています。)

ひとまず「pluginfactory.io」でCraft 3用のひな形をダウンロードし、コードをコピペします。ComposerでインストールできるようGitHubのhideki-a / heading-level-sliderにアップしてコマンドを実行したところ、意図したとおり動いていることが確認できました。Twigのフィルタなのでたいした処理もしていないので...。(設定画面はまだ書けていない。)Composerの勉強をしないとなと感じました。