CakePHP4へアップグレード...できず

問題を抱えながらも3.10へアップデート出来たので、いよいよアップグレード

システムがインストールされているディレクトリのvendorに移動して、アップグレードガイドを参考に、ツールをダウンロード

[webmaster@almalinux8 ~]$ pwd
/var/www/html
[webmaster@almalinux8 ~]$ cd app/vendor/cakephp
[webmaster@almalinux8 cakephp]$ git clone https://github.com/cakephp/upgrade
Cloning into 'upgrade'...
remote: Enumerating objects: 3569, done.
remote: Counting objects: 100% (1555/1555), done.
remote: Compressing objects: 100% (501/501), done.
remote: Total 3569 (delta 1012), reused 1405 (delta 946), pack-reused 2014 (from 1)
Receiving objects: 100% (3569/3569), 569.35 KiB | 4.31 MiB/s, done.
Resolving deltas: 100% (1858/1858), done.

カレントを移動して、引き続き

[webmaster@almalinux8 cakephp]$ cd upgrade
[webmaster@almalinux8 upgrade]$ git checkout 4.x
branch '4.x' set up to track 'origin/4.x'.
Switched to a new branch '4.x'
[webmaster@iwl8 upgrade]$ composer install --no-dev
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires php ^8.0 but your php version (7.4.33) does not satisfy that requirement.
  Problem 2
    - symfony/string[v6.0.0, ..., v6.0.19] require php >=8.0.2 -> your php version (7.4.33) does not satisfy that requirement.
    - symfony/string[v6.1.0, ..., v6.4.15] require php >=8.1 -> your php version (7.4.33) does not satisfy that requirement.
    - Root composer.json requires symfony/string ^6.0 -> satisfiable by symfony/string[v6.0.0, ..., v6.4.15].

Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.
[webmaster@almalinux8 upgrade]$

と致命的とも思われるエラーが発生。翻訳してみると

問題 1
- ルート composer.json には php ^8.0 が必要ですが、php バージョン (7.4.33) はその要件を満たしていません。
問題 2
- symfony/string[v6.0.0、...、v6.0.19] には php >=8.0.2 が必要です -> php バージョン (7.4.33) はその要件を満たしていません。
- symfony/string[v6.1.0、...、v6.4.15] には php >=8.1 が必要です -> php バージョン (7.4.33) はその要件を満たしていません。
- ルート composer.json には symfony/string ^6.0 が必要です -> symfony/string[v6.0.0、...、v6.4.15] で満たせます。

「php 8」が必要??

composer.jsonの記述を調べてみると

    "require": {
        "php": "^8.0",
        "cakephp/console": "^4.0",
        "nette/utils": "^3.2",
        "rector/rector": "^0.16",
        "symfony/string": "^6.0",
        "phpstan/phpstan": "1.10.27"
    },

確かに、「"php": "^8.0",」がリクエストされている。しかしアップグレードガイドでは「CakePHP 4.0 は PHP 7.2 を必要とします。」となっていたはず。

アップグレードツールの更新履歴をgitで調べたら「Oct 15, 2022」の更新(https://github.com/cakephp/upgrade/commit/d5fd864d5fa09ae94ac359409f61ff7edae65dd3)でこの行が追加されていた。

PHP7.4環境では作業が行えないことが決定的になったので、環境を準備して、仕切り直すこととした。