我正在尝试通过 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调用表明您的物理内存不足。
升级主机或在另一台具有更多内存的计算机上进行依赖项更新。这样做
- 将composer.json和composer.lock复制到有足够内存的机器
- 在该机器上运行
composer require amasty/advanced-review --no-scripts --ignore-platform-reqs
- 将更新后的composer.json和composer.lock文件复制回Bluehost计算机
- 在 Bluehost 计算机上运行
composer install
这是可行的,因为 composer install
不执行任何复杂的依赖项解析,因此只需要很少的内存。
关于php - Composer 内存不足 - 需要替代方法来增加 PHP memory_limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090277/