composer 执行 update 或者 require操作,报错Fatal error: Out of memory (allocated xxx) (tried to allocate xxx bytes) 内存超出问题 ,整蛊了我整整一天,尝试了各种方法依然报错。【解决方案在文章最后】
完整报错信息如下:
VirtualAlloc() failed: [0x00000008] ڴԴ㣬
VirtualFree() failed: [0x000001e7] ͼЧĵַ
VirtualAlloc() failed: [0x00000008] ڴԴ㣬
VirtualFree() failed: [0x000001e7] ͼЧĵַ
Fatal error: Out of memory (allocated 1421869056) (tried to allocate 4096 bytes) in phar://D:/phpStudy/PHPTutorial/php/php-7.2.1-nts/composer.phar/src/Composer/DependencyResolver/Solver.php on line 223
尝试过以下方法:
1、设置PHP内存
查看PHP设置的内存多少?
php -r “echo ini_get(‘memory_limit’);” //结果是128M
然后尝试过以下操作:
临时设置内存:php -d memory_limit=-1 “D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\composer.phar\composer.phar” update
结果:仍然报错Out of memory
后面又尝试了直接修改php.ini配置文件中的memory_limit值直接改为-1
结果:仍然报错Out of memory
2、心态接近奔溃,直接把composer卸载了,重新安装了composer(心想我重装+重启电脑应该可以解决了吧)
一波骚操作过后,composer重装好了也重启了电脑,然后执行composer的update操作,居然还报错,心态完全崩溃。
心态奔溃久久不能平息。
后面继续查阅相关资料发现一个比较靠谱的解决方案:
php -d memory_limit=-1 composer.phar update --profile -vvv //composer.phar是绝对路径
首先尝试了在composer默认执行的composer.phar路径
php -d memory_limit=-1 D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\composer.phar\composer.phar update --profile -vvv
结果:仍然报错Out of memory
再仔细想一下,我安装的全局composer,“D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\composer.phar”这个只是默认启动的composer,然后找到composer真正的安装路径
php -d memory_limit=-1 C:\composer\composer.phar\composer.phar update --profile -vvv
带更新完后,不论执行composer的update还是require操作都没有再报错了。
【解决方案】
php -d memory_limit=-1 composer.phar update --profile -vvv //composer.phar需要composer真正的安装的绝对路径。