应使用 composer create-project laravel/laravel my-app 安装 laravel,它自动拉取骨架、安装依赖、生成 .env 并执行 key:generate;指定版本需用 "10.*" 等语义化约束,不可省略引号或写 v 前缀。

直接用 composer create-project,别碰 composer init——后者只生成空 composer.json,而你要的是能立刻跑起来的项目骨架。
为什么 create-project 报 “Not enough arguments”?
命令必须带包名,漏掉就直接报错,不是环境或权限问题。
-
composer create-project laravel/laravel myapp✅ 正确(包名 + 目录名) -
composer create-project❌ 缺包名,报Not enough arguments (missing: "package") -
composer create-project myapp❌ 把目录名当包名,报Could not find package myapp
包名得是 Packagist 上真实存在的、"type": "project" 的模板,比如 laravel/laravel、symfony/skeleton、topthink/think,而不是 laravel/framework 这类纯库。
拉不到最新代码?版本约束和稳定性要手动指定
默认只拉 stable 版本(如 v11.2.0),不是 main 或 dev-main 分支。想拉开发版,必须显式加参数:
-
composer create-project laravel/laravel myapp "11.*"→ 拉 11.x 最新稳定版(引号防 shell 展开*) -
composer create-project laravel/laravel myapp dev-main --stability=dev→ 拉 main 分支 -
composer show laravel/laravel --all→ 查看所有可用版本和分支
省略引号、把 11.* 写成 11. *(中间有空格),shell 会报 No such file or directory,错误位置常在命令开头,容易误判为网络问题。
项目生成后不能直接跑?三件事漏一不可
骨架 ≠ 就绪。很多 Class not found 或 500 Internal Server Error 其实只是这三步没做:
- 复制环境文件:
cp .env.example .env(Laravel)或进目录运行php init(Yii2) - 生成密钥:
php artisan key:generate(Laravel),否则 session、cookie 全失效 - 设存储权限:
chmod -R 775 storage bootstrap/cache(Linux/macOS),否则日志写不进、缓存刷不出
Web 服务器 root 必须指向 public/(Laravel)或 web/(Symfony),不是项目根目录。
哪些选项几乎每次都要加?绕过交互和脚本陷阱
裸跑 composer create-project laravel/laravel myapp 在国内大概率卡住或装出 dev 分支导致后续命令缺失。稳定初始化建议固定组合:
-
--no-interaction(简写-n):跳过 Git 凭据输入、Breeze/Jetstream 向导等交互环节 -
--no-scripts:跳过自动执行的钩子(如php artisan key:generate),防网络超时中断 -
--prefer-dist:强制走压缩包,避免 Git 克隆失败或 SSH 权限问题 -
--stability=stable:尤其对 Yii2/Symfony,防拉到dev-main导致cookieValidationKey缺失
示例(Laravel 11):composer create-project laravel/laravel:^11.0 myapp --no-interaction --no-scripts --prefer-dist
真正麻烦的从来不是命令本身,而是它背后隐含的“信任链”:你信这个包的 composer.json、信它的脚本逻辑、信你的本地环境能正确执行它——哪一环松动,都可能让项目卡在 Initializing project 或生成一个看似完整、实则无法启动的目录。











