create-project 不是“装个包”,而是拉取完整可运行的项目骨架;90% 失败源于用错包名、漏参数或忽略 php 环境约束。

直接说结论:create-project 不是“装个包”,而是拉一个完整可运行的项目骨架;用错包名、漏参数、忽略 PHP 环境约束,90% 的失败都发生在这三处。
为什么 composer require laravel/framework 跑不起来?
因为 laravel/framework 只是类库,没有 artisan、没有 public/index.php、没有 .env.example。你执行 php artisan serve 会报 Command "serve" is not defined,访问域名返回 404——web 服务器指向了空根目录,而非 public/。
- 能用
create-project的包必须声明"type": "project"(比如laravel/laravel,不是laravel/framework) - 常见合法模板:
laravel/laravel、symfony/skeleton、yiisoft/yii2-app-basic、roots/bedrock - Packagist 页面上点开
composer.json,确认type字段值为project再下手
create-project 命令必须带的四个参数组合
裸跑 composer create-project laravel/laravel myapp 在国内大概率卡在 Loading composer repositories 或装出 dev 分支导致后续命令缺失。稳定初始化得靠这组参数:
-
--prefer-dist:强制走压缩包,避免 Git 克隆失败或 SSH 权限问题 -
--no-scripts:跳过自动执行的钩子(如php artisan key:generate),防网络超时中断 -
--stability=stable:尤其对 Yii2/Symfony,防拉到dev-main导致cookieValidationKey缺失 -
--no-interaction:关闭 Laravel 的交互式向导(Breeze/Jetstream 选装),CI/CD 必备
示例(Laravel 11):composer create-project laravel/laravel:^11.0 myapp --no-interaction --no-scripts --prefer-dist
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
装完不能直接跑?三件事漏一不可
骨架生成 ≠ 项目就绪。很多“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),不是项目根目录。
--no-install 和 --no-dev 到底影响什么?
--no-install 是最危险的“省事”选项:它只解压源码,不生成 vendor/autoload.php,也不安装任何依赖。结果就是 php artisan 直接报错 Class 'Illuminate\Foundation\Application' not found。
-
--no-dev会跳过require-dev里的包(如phpunit、fakerphp/faker),适合生产部署,但某些模板的初始化脚本(如post-root-package-install)依赖它们,加了反而失败 - 想离线安装?先用
--no-install拉代码,再进目录手动跑composer install --no-dev - 报
[RuntimeException] Package has a PHP requirement incompatible with your PHP version?不是 Composer 错,是目标包要求 PHP 8.2,你本地是 8.1 —— 换 PHP 版本或换包版本
最容易被忽略的其实是 PHP 扩展依赖:Laravel 要 openssl、pdo、mbstring,缺一个,create-project 就可能中途静默失败,或者装完 php artisan 报错找不到类。跑之前先 php -m | grep -E "(openssl|pdo|mbstring)" 确认一遍。










