Composer内存不足-需要其他方法来增加PHP memory_limit

时间:2019-07-18 08:32:42

标签: php magento composer-php

我正在尝试通过Composer在客户端的Magento 2上安装扩展程序,但是我遇到了旧的PHP内存不足错误。

我的客户端由Bluehost托管,不幸的是,这意味着我不能只修改php.ini中的memory_limit,因为它是只读的,并且他们的cPanel MultiPHP INI编辑器不会影响SSH。我的客户端与Bluehost保持联系,并被告知Bluehost不允许更改SSH memory_limit,但是,我的客户端最近才需要安装其他扩展,这需要增加memory_limit,但他们自己做了他们不记得他们使用了什么命令或编辑过的文件。

由于可以运行命令composer require path/to/extension,因此可以确认Composer已在服务器上正确安装。这只会导致内存不足错误。

运行命令COMPOSER_MEMORY_LIMIT=-1 composer require amasty/advanced-review会导致相同的错误:

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory

Fatal error: Out of memory (allocated 809508864) (tried to allocate 4096
bytes) in phar:///opt/cpanel/composer/bin/composer/src/Composer
/DependencyResolver/RuleSetGenerator.php on line 126

有人对我如何使事情正常运行有任何建议吗?

1 个答案:

答案 0 :(得分:0)

您没有遇到PHP内存限制。如果是这种情况,则错误消息将类似于“允许的N字节内存容量耗尽”之类的消息。失败的mmap呼叫表明您的物理内存已用完。

要么升级主机,要么在具有更多内存的另一台计算机上进行依赖项更新。为此

  1. 将composer.json和composer.lock复制到具有足够内存的计算机上
  2. 在该计算机上运行composer require amasty/advanced-review --no-scripts --ignore-platform-reqs
  3. 将更新后的composer.json和composer.lock文件复制回Bluehost计算机
  4. 在Bluehost计算机上运行composer install

之所以可行,是因为composer install不执行任何复杂的依赖项解析,因此需要很少的内存。