create-project是Composer初始化完整可运行框架项目的唯一可靠方式,require仅安装类文件而无入口、配置及命令工具,必致启动失败;必须组合--prefer-dist、--no-scripts、--stability=stable、--no-interaction等参数,并装完立即复制.env、生成密钥、设存储目录权限,Web服务器root须指向public/或web/子目录。

create-project 是 Composer 初始化完整可运行框架项目的唯一可靠方式,不是“可选方案”,而是强制路径。用 composer require 装框架核心库(如 laravel/framework、yiisoft/yii2)只会得到一堆类文件,没有入口、没配置、没命令行工具,项目必然启动失败。
为什么不能用 require 装框架
框架不是普通依赖包——它需要预置结构:index.php 入口、config/ 目录、artisan 或 yii 命令脚本、路由引导逻辑等。require 只往 vendor/ 里扔代码,不生成这些。
- 现象:执行
php artisan serve报错Command "serve" is not defined - 现象:访问
http://localhost返回 404,因为 web 服务器指向了空的项目根目录,而非public/或web/ - 现象:
vendor/bin/yii文件不存在,./yii migrate根本无法执行
create-project 必加的关键参数
不加参数的 create-project 在国内环境大概率卡死或装错版本,必须组合使用以下参数:
-
--prefer-dist:强制走压缩包安装,比源码快 3–5 倍,且避免 Git 权限/网络问题 -
--no-scripts:跳过 post-install-cmd(如php init、php artisan key:generate),防止因网络超时中断;装完再手动补 -
--stability=stable:尤其对 Yii2,防误拉dev-master分支(国内镜像同步滞后,常导致cookieValidationKey缺失、命令找不到) -
--no-interaction:关闭 Laravel 的交互式向导(是否装 Breeze、Jetstream),CI/CD 或批量部署必需
示例(Laravel 11 静默安装):composer create-project laravel/laravel:^11.0 myapp --no-interaction --no-scripts --prefer-dist
装完必须立刻做的三件事
骨架生成 ≠ 项目就绪。漏掉任意一步,后续调试全是“找不到类”“密钥未设置”“权限拒绝”这类低级报错。
- 复制环境文件:
cp .env.example .env(Laravel)或进项目目录后运行php init(Yii2) - 生成密钥:
php artisan key:generate(Laravel)、php init时选 Development(Yii2) - 设存储目录权限:
chmod -R 775 storage bootstrap/cache(Linux/macOS),否则日志写不进、缓存刷不出
注意:Slim 和 ThinkPHP 的 skeleton 默认已含 .env 和基础配置,但 Laravel 10+ 和 Yii2 仍需手动触发初始化。
Web 服务器入口路径最容易错
所有主流 PHP 框架都要求 Web 服务器 root 指向特定子目录,不是项目根目录——这是 90% 的 404 和白屏根源。
- Laravel / Slim / ThinkPHP:root →
public/,启动命令为php -S localhost:8000 -t public - Yii2:root →
web/,启动命令为cd web && php -S localhost:8000 router.php(router.php必须显式指定) - 直接把整个项目拖进 XAMPP 的
htdocs/下?必挂。Apache/Nginx 配置里root写错一级,就暴露.env或app/目录
本地开发别硬配 Nginx,优先用框架自带的内置服务器命令验证——它绕过所有 Web 服务器配置干扰,只暴露最本质的问题。











