composer create-project 是初始化新项目的标准方式,它直接从指定包拉取完整项目结构(含 composer.json 和脚手架文件),自动执行 post-create-project-cmd 脚本,不适用于已有 lock 文件的场景,新项目不可用 install 替代。

composer create-project 能直接生成项目骨架
composer create-project 是初始化新项目的标准方式,它不创建空目录再装包,而是从指定包(比如 laravel/laravel 或 symfony/skeleton)拉取完整项目结构,包括 composer.json、基础配置和脚手架文件。
- 默认会安装最新稳定版,加
--stability=dev才能拉 dev-main 或 alpha 分支 - 如果目标包有
post-create-project-cmd脚本(如 Laravel 的@php artisan key:generate),它会自动执行 - 不推荐用
composer init从零写composer.json再require,那只是配依赖,不是“创建项目”
为什么不用 composer install?
composer install 只适用于已有 composer.lock 的项目,它严格按锁文件还原依赖。新建项目时没有 composer.lock,强行运行只会报错:No composer.lock file present. You must run 'composer install' to generate one. —— 这是个死循环提示,别信。
- 新项目第一道命令必须是
create-project或init+require -
install是协作场景下的命令:你 clone 别人代码后,靠它复现一致环境 - 本地开发中误用
install替代create-project,结果得到一个空vendor/和报错退出
常见路径与权限坑
Windows 下用 Git Bash 或 WSL 执行 create-project 时,目标路径含空格或中文,可能触发 Could not delete... 类错误;Linux/macOS 上如果当前用户对目标目录无写权限,会卡在解压阶段,报 file_put_contents(./composer.json): failed to open stream。
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目,让您快速入门TP5项目开发。
- 目标路径建议全英文、无空格、非 root 用户可写,例如
~/myapp而非~/My Projects/app - 避免在系统级目录(如
/var/www)直接运行,除非明确配置了用户权限 - 若提示
zlib_decode(): data error,大概率是 Composer 缓存损坏,删掉~/.composer/cache/再试
PHP 版本不匹配导致 create-project 失败
create-project 会检查目标包的 require.php 约束,比如 Laravel 11 要求 "php": "^8.2"。如果你本地 PHP 是 8.1,命令会中断并提示:Your requirements could not be resolved to an installable set of packages.
- 先用
php -v确认版本,再查目标框架的官方文档要求 - 不要指望
--ignore-platform-req=php来硬过,运行时可能因语法差异直接 fatal error - 多版本 PHP 环境下(如 via asdf 或 phpbrew),确保
which php指向的是你要用的那个
实际项目启动没那么复杂,但每一步背后都有明确约束:命令语义、PHP 版本、路径权限、锁文件存在性——漏掉任何一个,都会卡在“为什么跑不起来”。









