php - Composer 内存不足 - 需要替代方法来增加 PHP memory_limit

标签 php magento composer-php

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

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

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

运行命令COMPOSER_MEMORY_LIMIT=-1composer 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

有人对我可以做什么以使事情正常工作有任何建议吗?

最佳答案

您没有达到 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 不执行任何复杂的依赖项解析,因此只需要很少的内存。

关于php - Composer 内存不足 - 需要替代方法来增加 PHP memory_limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090277/

相关文章:

php - 使用 volley 和 php 在 android 中发布 utf8(波斯语或阿拉伯语)

php - 用实际的换行字符代码替换\n

php - 以编程方式更新 magento 客户

JavaScript 错误 : product_info_tabsJsTabs is not defined

php - 使用 Docker,如何执行 PHP composer 命令?

php - 从多维数组中获取特定的键值对

php - 散列密码并将其和盐保存到 mysql pdo utf8 编码

magento - 如何 'force' Magento只加载一个模板

php - 使用另一个 symfony2 项目作为供应商

php - 我真的需要第一次安装所有供应商的 composer 吗?