CakePHP 3升级至4报错:Cake\Routing\Router类未找到
刷新Composer自动加载映射
执行composer dump-autoload重新生成自动加载规则,升级后依赖结构变化可能导致旧的自动加载缓存失效。如果无效,直接删除vendor目录和composer.lock文件,重新运行composer install,确保所有依赖完全适配CakePHP 4版本。验证框架Router类文件是否存在
检查vendor/cakephp/cakephp/src/Routing/Router.php文件是否存在且完整。如果文件缺失或损坏,重新安装依赖即可修复。确认bootstrap加载顺序
确保项目根目录config/bootstrap.php中,第一行是require __DIR__ . '/../vendor/autoload.php';,且在调用Router::reload()之前已经完成CakePHP核心框架的初始化加载。错误的加载顺序会导致框架类还未注册就被调用。排查自定义自动加载规则冲突
检查composer.json里的autoload和autoload-dev配置,是否有自定义命名空间覆盖了Cake\Routing,导致自动加载器去错误的路径查找类文件。检查PHP版本与必需扩展
CakePHP 4要求PHP 7.4及以上版本,低版本PHP可能无法正确解析新的命名空间或语法。用php -v确认版本,同时确保开启了mbstring、intl等CakePHP必需的扩展。清理残留缓存文件
删除tmp/cache目录下的所有缓存文件,包括类缓存、路由缓存等。CakePHP 3的缓存格式与4不兼容,残留缓存会引发加载错误。排查自定义Router类覆盖
检查项目src/Routing目录下是否存在自定义的Router.php文件。CakePHP自动加载优先级是项目类优先于框架类,这类自定义文件会覆盖框架的Router类,需修改命名空间或删除以适配新版本。
内容的提问来源于stack exchange,提问作者J.B.J.

