应迁移到Laminas,因Zend Framework 2/3已停止维护;正确命令是composer create-project laminas/laminas-mvc-skeleton,而非已弃用的zendframework/zendframework。

Zend Framework 2 和 3 已停止维护,官方推荐迁移到 Laminas(即 Zend Framework 的继任组织),直接用 Composer 安装原始 zendframework/zendframework 不仅会失败,还会拉入大量废弃包和安全风险。
为什么 composer create-project zendframework/zendframework 会报错
该命令在 2019 年后基本失效,原因包括:
-
zendframework/zendframework包已在 Packagist 彻底弃用,Composer 会返回Could not find package - 即使通过历史镜像强制安装,也会因 PHP 8+ 不兼容、依赖冲突(如
zend-servicemanagerv2 vs v3)导致Class not found - 所有组件已迁移至
laminas/命名空间,自动加载规则完全不同
正确安装 Laminas MVC 应用(替代 Zend Framework 3)
使用官方支持的现代方式初始化项目:
- 运行
composer create-project laminas/laminas-mvc-skeleton(PHP 7.4+,推荐 PHP 8.1+) - 安装过程会提示选择数据库适配器、认证模块等,按需选
none保持轻量 - 完成后进入目录,用
php -S localhost:8080 -t public/启动开发服务器 - 访问
http://localhost:8080应看到 Laminas 欢迎页,而非旧版 Zend 的“Welcome to Zend Framework”
如果必须复现 Zend Framework 2 环境(如老项目维护)
只能锁定特定历史版本,并手动处理兼容性断点:
- 创建空项目后,在
composer.json中显式指定:"require": {
"zendframework/zendframework": "2.5.3"
} - 执行
composer install --ignore-platform-reqs(绕过 PHP 版本检查,但仅限 PHP 5.6–7.2) - 必须禁用 OPcache 或设置
opcache.validate_timestamps=1,否则模块自动加载常出Class 'Zend\Mvc\Application' not found -
public/index.php需保留原始 Bootstrap 写法,不能混用 Laminas 的ConfigProvider模式
真正棘手的不是安装命令,而是命名空间迁移——所有 Zend\ 开头的类名要批量替换成 Laminas\,且配置键(如 service_manager → dependencies)和事件名(如 bootstrap → application.bootstrap)全变了。没改完一处,就少一个能跑起来的控制器。










