composer create-project 是新建可运行 php 项目的正确起点,必须指定包名(如 laravel/laravel)和目录名,否则报 “not enough arguments”;默认拉取 stable 版本,需显式指定 dev 分支或版本约束;国内应配置镜像源并确保路径全英文、可写;生成后须验证文件完整性、依赖安装及 php 版本兼容性。

composer create-project 是新建可运行 PHP 项目的正确起点,不是 composer init,后者只生成空 composer.json,不拉代码、不建目录、不装依赖——用它开新项目,等于只画了张设计图就宣布楼盖好了。
为什么 create-project 报 “Not enough arguments”?
命令必须带包名,不能只写 composer create-project。漏掉包名会直接报错,不是环境问题也不是权限问题。
-
composer create-project laravel/laravel myapp✅ 正确(包名 + 目录名) -
composer create-project❌ 缺包名,报Not enough arguments (missing: "package") -
composer create-project myapp❌ 把目录名当包名,报Could not find package myapp
包名必须存在于 Packagist 或你配置的私有源中,laravel/framework 这类主包不行,得用 laravel/laravel 这种声明了 "type": "project" 的模板包。
拉不到最新代码?检查默认行为和版本约束
不加版本参数时,create-project 默认拉取 stable release(比如 v10.42.0),不是 main 或 dev-main 分支。想拉开发版,必须显式指定:
-
composer create-project laravel/laravel myapp "10.*"→ 拉 10.x 最新稳定版(引号防 shell 展开*) -
composer create-project laravel/laravel myapp dev-main→ 拉 main 分支(需加--stability=dev) -
composer show laravel/laravel --all→ 查看所有可用版本和分支
省略引号、用空格分隔版本号(如 10.* 写成 10. *),会导致 shell 报 No such file or directory,错误位置常在命令开头,容易误判为网络问题。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
卡住不动或 vendor/ 为空?先盯镜像、缓存和权限
国内直连 packagist.org 极易超时,表现为命令无输出、CPU 占用低、等十分钟没反应。这不是 Composer 坏了,是网络没通。
- 查是否用了镜像:
composer config -g repo.packagist,应返回类似{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 临时切镜像:
composer create-project --repository=https://mirrors.aliyun.com/composer/ laravel/laravel myapp -
vendor/为空?大概率是安装中途失败但没报错,清缓存再试:composer clear-cache - 目标目录含中文、空格或权限不足(如
/var/www下非 root 用户执行),会触发file_put_contents(./composer.json): failed to open stream或Could not delete
路径务必全英文、无空格、当前用户可写,例如 ~/myapp,别用 ~/My Project 或 C:\Users\用户名\Desktop。
生成完项目立刻要验证的三件事
命令返回成功 ≠ 项目能跑。很多问题在 php artisan serve 或 composer dump-autoload 时才暴露:
- 进目录后执行
ls -la,确认composer.json、.env(Laravel)、public/或src/存在,不是只有空vendor/ - 运行
composer install看是否报错——某些模板的post-create-project-cmd脚本失败后不会中断命令,但密钥没生成、.env没写入 - 检查 PHP 版本是否满足要求:
php -v对照框架文档(如 Laravel 11 要求 PHP^8.2),--ignore-platform-req=php只是跳过检查,运行时仍可能 fatal error
真正麻烦的从来不是命令敲错,而是你信任的那个模板包的 composer.json 里写了什么脚本、用了什么平台约束、有没有硬编码路径——这些细节藏在它自己的源码里,不看不查,出问题只能靠猜。










