Composer内存耗尽本质是PHP CLI内存限制不足,需通过php -d memory_limit=2G或COMPOSER_MEMORY_LIMIT=2G临时/永久调整,优先确保修改CLI而非Web的php.ini配置。
Composer 执行时提示 Allowed memory size exhausted,本质是 PHP 启动时分配的内存不足,不是 Composer 本身能调大上限的地方——必须从 PHP 运行环境入手。
composer install 会爆内存?Composer 在解析依赖、下载包、生成自动加载映射(autoload_classmap.php)等阶段会大量加载 JSON 和 PHP 文件,尤其在大型项目或含大量 dev-dependencies 的项目中,PHP 进程很容易突破默认的 128M 或 256M 内存限制。
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted(即 128MB)memory-limit)能单独解决的——它只是个提示开关,不改 PHP 底层限制就无效php -d memory_limit=-1 是最直接有效的临时方案,但需确保你清楚后果(无内存保护)每次运行 Composer 前,用 -d 参数强制指定内存上限。这是最快验证是否为内存问题的方法。
php -d memory_limit=-1 /usr/bin/composer install
php -d memory_limit=2G /usr/bin/composer install
composer.bat,需写成 php -d memory_limit=2G composer.phar install(优先用
composer.phar 而非批处理封装)php -d memory_limit=2048M ——某些 PHP 版本对 M 单位解析不稳定,统一用 G 更可靠避免每次敲长命令,可固化设置。注意区分 php.ini 的 CLI 和 Web SAPI 配置文件(通常不同)。
php.ini:php --ini→ 看 “Loaded Configuration File” 路径
php.ini,找到 memory_limit 行,改为:memory_limit = 2G(不要留空格)export COMPOSER_MEMORY_LIMIT=2G(加到
~/.bashrc 或 ~/.zshrc),Composer 会自动识别该变量并用于内部 PHP 调用COMPOSER_MEMORY_LIMIT 优先级高于 php.ini,且只影响 Composer 自身进程,不影响其他 PHP 脚本自动化流程里容易忽略 PHP CLI
配置,导致构建失败。重点检查:
php:8.2-cli 默认仍是 128M)composer install,必须显式带内存参数:php -d memory_limit=2G composer install
composer/setup-php action,记得加 memory-limit: 2G 输入项(它会自动注入 -d 参数)php -v 发现 CLI 和 phpinfo() 显示的 memory_limit 不一致,说明 CLI 用了独立 php.ini,必须单独配置真正起作用的永远是 PHP CLI 的 memory_limit,Composer 只是触发者。改错配置文件、混淆 Web 和 CLI 环境、或漏掉 Docker/CI 的独立 PHP 实例,是 80% 的“改了没用”的原因。