答案是PHP CLI默认128MB内存限制导致Composer在依赖求解阶段崩溃,需用php -d "memory_limit=-1"或"2G"临时提升,并清理vendor与composer.lock、加--no-dev优化。

在Windows 10上用Composer安装ThinkPHP 6.0时,执行composer create-project topthink/think tp6突然中断并报出Allowed memory size of 134217728 bytes exhausted,这不是ThinkPHP本身的问题,而是PHP CLI进程被默认128MB内存限制硬性截断——你根本没机会走到解析框架代码那步,进程已在依赖求解阶段崩溃。
确认当前PHP CLI的内存限制值
打开PowerShell(不是CMD),运行:
php -i | findstr "memory_limit"
【必须用 PowerShell 查,CMD 的 findstr 不识别 UTF-8 输出,可能漏掉结果】
若输出为memory_limit => 128M或256M,这就是罪魁祸首。ThinkPHP 6依赖树含大量dev包(如phpunit、psr/log、symfony/var-dumper),Composer解析时真实内存占用常超1GB。
立即学习“PHP免费学习笔记(深入)”;
立即生效的临时修复:加 -d 参数强制提权
方法一(推荐):直接覆盖限制为无上限
在项目目录下,PowerShell中输入:
php -d "memory_limit=-1" composer create-project topthink/think tp6
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
【双引号不能省——PowerShell会把-1当作命令参数而非字符串值,不加引号将导致参数被截断,命令静默失败】
方法二:设具体上限(适合CI或担心失控)
php -d "memory_limit=2G" composer create-project topthink/think tp6
单位必须大写G,小写g会被PHP忽略;2G是安全阈值,既避开Docker cgroup误杀,又足够跑完TP6全量依赖。
规避高危操作组合
第一步:删干净残留
进入项目根目录,手动删除vendor/文件夹和composer.lock文件。这两者若存在且过期(比如是从旧项目复制来的),Composer会试图“兼容还原”,反而触发更复杂的依赖回溯,比全新安装更耗内存。
第二步:禁用开发依赖(仅部署环境适用)
如果你只是想快速跑起TP6示例,不写测试、不跑静态分析,加--no-dev:
php -d "memory_limit=-1" composer create-project topthink/think tp6 --no-dev
这能砍掉约50%内存峰值,因为PHPUnit、psr/log等dev依赖不再加载。
第三步:验证是否真解决问题
执行完安装命令后,检查tp6/目录下是否生成了完整的vendor/、composer.lock及index.php入口文件。若目录结构完整且无Fatal错误,说明内存限制已绕过。


















