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

Posted

技术标签:

【中文标题】Composer 内存不足 - 需要其他方法来增加 PHP memory_limit【英文标题】:Composer out of memory - need alternative way to increase PHP memory_limit 【发布时间】:2019-11-27 03:20:21 【问题描述】:

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

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

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

运行命令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

有人对我可以做些什么来让事情正常工作有什么建议吗?

【问题讨论】:

是否启用了 user.ini 文件?然后你可以像.htaccess 一样创建一个新的.ini 并覆盖它。一般来说memory_limitPHP_INI_ALL,这意味着你可以在任何地方设置它(.iniini_set.htacess)。 @CodeSpirit,对不起,我不清楚。我尝试了所有这些,但是 Bluehost 的设置方式可以防止内存限制被覆盖,除非通过 cPanel 的 MultiPHP INI 编辑器。好消息是,Peter 解决了我的问题,但实际上并不是我想的那样! 【参考方案1】:

您没有遇到 PHP 内存限制。如果出现这种情况,错误消息将类似于“允许的 N 个字节的内存大小已用尽”。失败的 mmap 调用表明您的物理内存不足。

要么升级主机,要么在另一台具有更多内存的机器上进行依赖更新。这样做

    将composer.json和composer.lock复制到内存充足的机器上 在那台机器上运行composer require amasty/advanced-review --no-scripts --ignore-platform-reqs 将更新后的 composer.json 和 composer.lock 文件复制回 Bluehost 机器 在 Bluehost 机器上运行 composer install

这是因为composer install 不做任何复杂的依赖解析,因此需要很少的内存。

【讨论】:

天哪,你说得对,@Peter。我之前遇到了一个 PHP 内存限制问题,我是如此的盲目以至于我什至没有注册我正在查看一个完全不同的错误- 沮丧和绕圈子,我们有它的工作! 你太棒了。你让我免于头疼。我浪费了很多时间来解决内存问题。

以上是关于Composer 内存不足 - 需要其他方法来增加 PHP memory_limit的主要内容,如果未能解决你的问题,请参考以下文章

laravel composer update 内存不足

Xampp 使用 Composer 命令内存不足

增加内存限制 Composer 不起作用

Composer 要求内存不足。 PHP 致命错误:允许的内存大小为 1610612736 字节已用完 Voyager

Composer 要求内存不足。 PHP致命错误:允许的内存大小为1610612736字节已用尽

手机内存总是提示不足的解决方法