Composer内存不足求助:调整内存后仍显示仅64M可用
我之前在Cygwin环境里折腾Composer的时候,也碰到过完全一样的内存报错!明明机器内存够,改了php.ini和命令行参数都没用,系统还是死咬着64M限制不放。给你几个亲测有效的排查和解决方向:
先确认你用的是哪个PHP版本
Cygwin里很容易同时存在Windows原生PHP和Cygwin编译的PHP,你修改的php.ini可能根本不是当前运行的PHP在加载的。先在终端跑这个命令:php -i | grep "Loaded Configuration File"看看输出的路径,确保你修改的是这个路径下的php.ini文件。如果发现是Windows版的PHP,直接去它的安装目录找到php.ini,手动把
memory_limit改成-1或者足够大的值,再回来运行Composer。检查Cygwin的进程内存限制
有时候问题出在Cygwin本身的进程内存配额上,和PHP的设置无关。先在终端执行:ulimit -a看一下
max memory size那项的值,如果是64M左右,就先执行这个命令解除限制:ulimit -m unlimited之后再运行你的Composer命令试试。
给Composer加优化参数减少内存消耗
依赖解析过程本身就很吃内存,试试加上这些参数来降低负载:php -d memory_limit=-1 composer.phar install --prefer-dist --no-dev--prefer-dist会优先下载压缩包,比克隆源码省内存;--no-dev会跳过开发依赖,也能减少解析压力。换用Windows原生Composer
如果上面的方法都不行,干脆直接用Windows版的Composer(就是官网下载的那个安装程序),在Cygwin终端里直接输入composer命令调用它。因为它用的是Windows环境的PHP,内存限制的设置更容易生效,我当时就是靠这个解决的问题。
内容的提问来源于stack exchange,提问作者autobottodoggo

