答案是php -d memory_limit=-1必须写在composer命令最前面,顺序错误则php收不到参数;composer_memory_limit仅为软限制,不绕过php底层内存限制。

php -d memory_limit=-1 必须写在 composer 命令最前面
顺序错了就完全无效。写成 composer install -d memory_limit=2G,PHP 根本收不到参数,composer 会把 -d 当作子命令忽略。正确写法是:php -d memory_limit=-1 composer install。
Linux/macOS 直接执行即可;Windows CMD 可用 php -d "memory_limit=-1" composer install(加引号更稳妥);PowerShell 必须加引号,否则 - 被识别为参数:php -d "memory_limit=-1" composer install。
如果 which composer 返回的是 shell wrapper(如 /usr/bin/composer),-d 很可能被 wrapper 忽略。此时应改用绝对路径:php -d memory_limit=-1 /usr/bin/composer install。
别信 COMPOSER_MEMORY_LIMIT=2G 就能解决问题
COMPOSER_MEMORY_LIMIT 是软限制,只影响 Composer 自己的依赖求解缓存、JSON 解析预分配等内部逻辑,不改变 PHP 进程的硬限制。进程在第 129MB 就被系统 OOM killer 杀掉,Composer 根本没机会读到这个变量。
验证是否生效?加 -v 参数运行,开头几行会打印 Memory limit: 2G——但这只是 Composer 自己“以为”能用这么多,不代表 PHP 允许。
真正起作用的只有 php -d memory_limit=...。环境变量可配合使用(如 COMPOSER_MEMORY_LIMIT=2G php -d memory_limit=2G composer install),但不能替代前者。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer install 卡在 Resolving packages?不是网络问题,是内存爆了
报错 Allowed memory size of 134217728 bytes exhausted 或直接返回 Killed,基本就是 PHP 内存耗尽。尤其在 1GB 内存的服务器上,Composer 2.x 的 SAT 求解器解析 Laravel/Symfony 类项目时,128M 默认值完全不够。
-
composer install --no-dev --optimize-autoloader --no-interaction能省下约 30% 内存,但前提是composer.lock已存在且有效 - 若
lock文件过期又不敢全量update,可用composer update --lock:它只重写 lock 文件、不安装包、跳过冲突检测,内存开销极小 - 禁用 xdebug(
php -d zend_extension= -d xdebug.mode=off composer install)能减少 50%+ 内存占用,开发机常开着它,但部署时毫无必要
1GB 服务器连 swap 都没配?先挂个 1G swap 再跑
CentOS/Ubuntu 上 free -m 显示 swap 为 0,composer install 极易被内核 OOM killer 杀掉。临时挂一个:
sudo dd if=/dev/zero of=/var/swapfile bs=1024 count=1000000sudo mkswap /var/swapfilesudo swapon /var/swapfile
注意:swap 是闪存模拟内存,速度慢,仅作应急。不要长期依赖;CI/CD 流水线或生产部署应优先用构建机预装 vendor,而非在低配服务器上现场 install。
最后提醒:所有这些操作都绕不开一个事实——composer install 在 1GB 机器上本就不该是常态。真正稳定的方案是把依赖安装移出目标服务器,在 CI 或本地构建机完成,再同步 vendor/ 目录过去。临时救急可以,但别把它当成部署流程。










