说实话,很多人一上手Yii2,第一反应就是“Composer怎么配合Yii用”——这个问法本身就有点偏差。说白了,Composer不是“配合”Yii工作,而是Yii能跑起来的根基。没有它,Yii这个类都加载不了,你敲php yii命令,它直接给你甩个报错。下面这些细节,才是真正让你少踩坑的关键。

composer.json 里 require 和 require-dev 别混用

生产环境里,只有 require 里的包才是“正式员工”。yiisoft/yii2ext-mbstringpdo 这些必须放在这里;而 require-dev 是给本地开发用的,比如 phpunit/phpunityiisoft/yii2-debug。CI/CD 流水线默认跑的是 composer install --no-devrequire-dev 里的东西根本不会下载,更不会写进 vendor/autoload.php

入口文件里 autoload.php 路径写错就全崩

所有 Yii 入口文件(web/index.phpfrontend/web/index.php)第一行必须是:require __DIR__ . '/../vendor/autoload.php';。高级模板里 web/ 是子目录,少一个 .. 就找不到 vendorClass 'Yii' not found 立刻出现。

安装必须用 create-project,别 require 核心包

composer require yiisoft/yii2 只拉核心库,没有 web/config/runtime/ 目录,也没有 index.php 入口,项目根本跑不起来。官方模板(yii2-app-basicyii2-app-advanced)才是完整的骨架。

版本约束写错会让整个应用启动失败

Yii2 和 Yii3 完全不兼容。"yiisoft/yii2": "^2.0.0" 看似安全,但一旦被其他包间接升级成 "^3.0.0"new yiiaseComponent() 就会爆 Class 'yiiaseComponent' not found(注意少了反斜杠)。

说实话,最常被忽略的其实是 cookieValidationKey 没设——它不报错在 Composer 层,但一访问首页就 InvalidConfigException,而且这个 key 上线后不能改,否则所有用户得重新登录。

本文转载于:https://www.php.cn/faq/2348970.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。