用 composer create-project 安装 Yii2 官方推荐模板项目而非 require 核心包,因后者无应用骨架;基础版适合学习,高级版需运行 init 脚本并配置 Web 服务器入口。

直接用 composer create-project 命令就能装好 Yii2,但默认会拉取最新稳定版(通常是 2.0.49+),而很多老教程写的 yii2-basic 或 yii2-advanced 模板结构已随版本变化,盲目复制命令容易卡在依赖冲突或权限报错上。
用 create-project 安装基础版或高级版
Yii2 官方推荐通过模板项目初始化,不是用 require 往空目录里加包。基础版适合学习和小项目,高级版带前后台分离结构。
- 装基础版:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
- 装高级版:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
- 如果提示
zlib_decode(): data error或下载慢,先执行composer config -g repo.packagist composer https://packagist.phpcomposer.com(国内用户)或换源:composer config -g repo.packagist composer https://packagist.org - 安装完成后,
basic目录下直接有web/入口,advanced需要先运行init脚本选开发/生产环境,再配置 Web 服务器指向frontend/web或backend/web
为什么不用 composer require yiisoft/yii2?
因为 yiisoft/yii2 是核心组件包,不包含应用骨架、配置文件、入口脚本和默认路由。单独 require 它只会把一堆类库丢进 vendor/,项目根本跑不起来。
- 你看到的
index.php、config/web.php、controllers/SiteController.php全来自模板仓库(如yii2-app-basic),不是核心包自带 - 若硬要用
require,还得手动建目录、写入口、配 autoloader——等于重造轮子,且极易漏掉yii2-composer插件依赖,导致AssetBundle发布失败 -
create-project本质是 clone 模板 +composer install+ 执行模板里的post-create-project-cmd脚本(比如生成 cookie key)
常见报错和绕过方法
安装过程最常卡在内存不足、PHP 版本不匹配、或 OpenSSL 扩展缺失,错误信息往往藏在 verbose 日志里。
立即学习“PHP免费学习笔记(深入)”;
-
PHP Fatal error: Allowed memory size of XXX bytes exhausted:临时加大内存,运行前加php -d memory_limit=-1,例如:php -d memory_limit=-1 /usr/bin/composer create-project --prefer-dist yiisoft/yii2-app-basic basic
-
Your requirements could not be resolved to an installable set of packages:检查 PHP 版本,Yii2 2.0.x 要求 PHP >= 5.4.0,但 2.0.40+ 实际需 >= 5.6;用php -v确认,别信系统php软链指向旧版本 -
The openssl extension is required for SSL/TLS protection:Ubuntu/Debian 用户执行sudo apt install php-openssl,CentOS 执行yum install php-opcache(注意:opcache 不是 openssl,要装php-common和php-cli包才带 openssl) - Windows 下提示
failed to open dir: Permission denied:关闭杀毒软件实时扫描,或用管理员权限开 CMD;也可能是 Composer 缓存损坏,删掉%USERPROFILE%\AppData\Roaming\Composer\cache重试
真正麻烦的不是命令本身,而是模板初始化后没改 web.php 里的 'cookieValidationKey' 就直接访问,结果页面空白还无报错——这个 key 必须手动填非空字符串,否则 session 和表单校验全挂,而且默认错误日志可能被关掉,得打开 YII_DEBUG 才能看到真实原因。











