CakePHP 4.1 を 4.0 にダウングレードする方法

はじめに

執筆時点では CakePHP 4 の最新版は 4.1.1 です。

CakePHP 4.0 系を使いたくて、下記のようにバージョンを指定してインストールしたところ、最新版の 4.1.1 がインストールされてしまいました。

> composer create-project --prefer-dist cakephp/app myapp "4.0.*"
Installing cakephp/app (4.0.4)
  - Installing cakephp/app (4.0.4): Downloading (100%)
  ...
  - Installing cakephp/cakephp (4.1.1): Downloading (100%)
  ...

CakePHP には cakephp/app と cakephp/cakephp があり、
後者の cakephp/cakephp が CakePHP 本体で、
cakaphp/app はそれを使ったアプリケーションの土台となるセットになります。

CakePHP 3 までは cakephp/app と cakephp/cakephp のバージョン番号 3.● の部分は連動していたと思うのですが、CakePHP 4.0 はしませんでした。
(cakephp/app 4.1.1 の composer.json を見た感じだと、4.1 以降は連動するようになりそうです)

CakePHP 4.1 から 4.0 にダウングレードする方法

新しく CakePHP をインストールする場合は、
まず下記コマンドで cakephp/app の 4.0 系をインストールします。

Windows で試していますが、macOS でも Linux でも同様にできると思います。

コマンド内の myapp のところは適宜変更してください。

> composer create-project --prefer-dist cakephp/app myapp "4.0.*"

次に、インストールしたフォルダにある composer.json の cakephp/cakephp のバージョンを下記のように ~4.0.0 に変更します。

/myapp/composer.json
"cakephp/cakephp": "~4.0.0",

そして composer update を行えば完了です。

> cd myapp
> composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
  - Downgrading cakephp/cakephp (4.1.1 => 4.0.9): Loading from cache
  - Downgrading cakephp/debug_kit (4.3.1 => 4.2.0): Loading from cache
Writing lock file
Generating autoload files

まだ基本的な CRUD 処理くらいしか使っていませんか、今のところは問題なく動いています。