composer安装thinkphp 6.0内存不足报错是因php cli默认128mb限制,需用php -d "memory_limit=-1"或"2g"临时提升,并清理vendor与composer.lock、加--no-dev或--no-autoloader优化。

在 Windows 10 上用 Composer 安装 ThinkPHP 6.0 时,执行 composer create-project topthink/think tp6 或 composer install 突然中断并报出 Allowed memory size of 134217728 bytes exhausted,这不是 ThinkPHP 本身的问题,而是 PHP CLI 进程被默认 128MB 内存限制硬性截断——你根本没机会走到解析框架代码那步,进程已在依赖求解阶段崩溃。
确认当前 PHP CLI 的内存限制值
打开 PowerShell(不是 CMD),运行:
php -i | findstr "memory_limit"
若输出为 memory_limit => 128M 或 256M,这就是罪魁祸首。ThinkPHP 6 依赖树含大量 dev 包(如 phpunit、psr/log、symfony/var-dumper),Composer 解析时真实内存占用常超 1GB。
【必须用 PowerShell 查,CMD 的 findstr 不识别 UTF-8 输出,可能漏掉结果】
立即生效的临时修复:加 -d 参数强制提权
方法一(推荐):直接覆盖限制为无上限
在项目目录下,PowerShell 中输入:
php -d "memory_limit=-1" composer create-project topthink/think tp6
注意双引号不能省——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、PHPStan、friendsofphp/php-cs-fixer 等包完全跳过解析。
第三步:跳过 autoload 生成(紧急构建用)
php -d "memory_limit=-1" composer create-project topthink/think tp6 --no-autoloader --no-scripts
安装完再单独执行:
cd tp6 && php -d "memory_limit=-1" composer dump-autoload -o
验证安装是否真正成功
进入 tp6 目录后,运行:
php think
如果输出完整的命令列表(如 clear、make:controller、optimize:schema),说明 autoload 已注册成功;若报 Class 'think\App' not found,说明入口未加载 vendor/autoload.php,请检查 public/index.php 第一行是否为:
require __DIR__ . '/../vendor/autoload.php';
【不要用浏览器直接打开 index.php 文件路径,必须通过 PHP 内置服务器或 Nginx/Apache 访问】
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











