背景
公司的测试环境突然composer失败,原因是内存不够编译失败
PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/composer/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/composer/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
目前有二种解决思路
- 采用Swap虚拟内存来增加内存,使用Swap确实是可以,但是还是时不时失败,那么这个解决思路放弃,想要尝试这个方式的小伙伴可以去我博客找Swap相关文章
- 采用php限制内存
- 竟然系统不满足资源,那么我们就要让它限制到系统能给到的最大资源
- 限制php.ini的内存
- 使用composer加上资源限制
解决方案
第一步:
打开php.ini配置文件,找到memory_limit选项,按系统资源进行限制
memory_limit = 1024M
第二步
使用composer命令时,前面加上 COMPOSER_MEMORY_LIMIT=-1
COMPOSER_MEMORY_LIMIT=-1 composer install