composer安装Yii2框架教程_高级版/基础版安装与配置【实操】

14次阅读

yii2基础版和高级版是两个独立项目骨架,命令、目录结构、启动方式均不同:基础版用composer create-project –prefer-dist yiisoft/yii2-app-basic basic,单入口web/;高级版用composer create-project –prefer-dist yiisoft/yii2-app-advanced advanced,需执行php init并配置前后端DOCUMENT_ROOT。

composer安装Yii2框架教程_高级版/基础版安装与配置【实操】

直接用 composer create-project 装 Yii2,高级版和基础版不是“选模板”,而是两个独立项目骨架,命令不同、目录结构不同、启动方式也不同——装错一个,后续路由、入口文件、配置加载全会出问题。

基础版安装:适合快速验证或轻量后端 API

基础版只有一个 web/ 入口目录,index.php 直接在根下,没有前后端分离的 frontend/backend 结构。它默认不带 Gii、用户登录等模块,更干净。

执行命令:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

注意点:

  • yiisoft/yii2-app-basic 是官方包名,别写成 yii2-basic 或漏掉 yiisoft/ 命名空间
  • 安装后进 basic/ 目录,用 php yii serve 启动(PHP 7.4+ 内置服务器),别直接跑 web/index.php —— 因为没配 Web 服务器重写规则时,index.php 无法正确解析路由
  • 数据库配置在 config/db.php,不是 main-local.php

高级版安装:适合中大型项目,含前后端分离结构

高级版自带 frontendbackend 两个应用,共用 common 层,console 支持命令行任务。但它的入口路径更绕,web/ 不在项目根目录,而是在 frontend/web/backend/web/ 下。

执行命令:

composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced

关键后续操作:

  • 必须先运行 init:进入 advanced/ 目录后执行 php init,选 Development 模式,它会生成 environments/ 下的配置并软链到 frontend/web/backend/web/ 等位置
  • 没跑 init 就直接访问 frontend/web/index.php,大概率报错 class 'Yii' not foundInvalid Parameter – yiibaseInvalidParamException
  • frontend/web/backend/web/index.php 都要单独配置 Web 服务器的 DOCUMENT_ROOT,不能把整个 advanced/ 当根目录

常见错误:composer 安装卡住或报错

Yii2 依赖多,国内直连 Packagist 经常超时或 404。别硬等,优先换源:

  • 全局换阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 如果提示 failed to open stream: php_network_getaddresses: getaddrinfo failed,说明 dns 解析失败,不是网络不通,换源后重试即可
  • 遇到 require yisoft/yii2 ~2.0.46 报冲突?检查是否本地已装过其他 Yii2 项目并锁定了旧版本,删掉 composer.lockvendor/ 后重装
  • PHP 版本低于 7.4 会直接失败——Yii2.0.x 最低要求 PHP 7.4,php -v 必须确认清楚

装完第一件事:验证 autoloader 和入口路径

不管基础版还是高级版,只要看到 Class 'Yii' not found,90% 是因为 vendor/autoload.php 没被正确引入,或 index.php 找不到 Yii::createWebApplication() 所需的配置路径。

快速自查:

  • 打开 web/index.php(基础版)或 frontend/web/index.php(高级版),确认第 13 行左右有:require __DIR__ . '/../vendor/autoload.php';
  • 确认 ../vendor/ 路径真实存在且可读;高级版里这个 .. 是从 web/ 往上一级,指向的是 frontend/ 目录,不是项目根目录
  • 基础版的 config/web.php 在根目录下;高级版的对应文件在 environments/dev/frontend/config/main-local.phpinit 后才生效

路径差一级,整个应用就起不来。别跳过 ls -la 看一眼 vendor 和 config 是否真在预期位置。

text=ZqhQzanResources