【问题标题】:PHP out of memory error does not reflect memory_limit setting in php.iniPHP 内存不足错误不反映 php.ini 中的 memory_limit 设置
【发布时间】:2017-06-11 05:25:06
【问题描述】:

当我尝试使用 Composer 客户端将软件包安装到 Contao 时,出现错误:

致命错误:phar://D:/wamp/www/myproject/composer/composer.phar/src/Composer/DependencyResolver/Solver.php 中允许的内存大小为 1073741824 字节已用尽(试图分配 134217728 字节)第 220 行

真的很困惑。我的 PHP 内存限制设置为 512M。 phpinfo() 确认。但是 1073741824 是一个千兆字节!但这仍然不够,好像脚本完全无视 PHP 内存限制(在哪里?),甚至 1 GB 都不够!?!?

我能做什么?我读到了 RLimitMEM,但我在 WAMPServer 上的任何地方都找不到这样的设置。

【问题讨论】:

    标签: php composer-php wampserver contao


    【解决方案1】:

    建议作曲家客户端使用所谓的分离模式。如果您有合适的 CLI 环境可用,您将有 no 内存限制和 no 最大执行时间。此外,这两个限制都可以通过命令行参数进行控制。

    但是,这并不适用于所有托管环境。有关详细信息,请参阅此 Wiki 条目:https://github.com/contao-community-alliance/composer-client/wiki/Execution-modes

    【讨论】:

      【解决方案2】:

      我找到了答案。

      我在项目中搜索memory_limit 并发现,作曲家客户端尝试在system/modules/!composer/src/Runtime.php 中设置内存限制有这一行:@ini_set('memory_limit', '1024M'); 我将其更改为@ini_set('memory_limit', '2048M');,实际上使可用内存增加了一倍,并且成功了。

      【讨论】:

      • 我必须在这里评论一下,我认为 PHP 脚本使用这么多内存绝对令人震惊。我就是不明白。
      • 这是 Composer 的依赖解析部分。由于作曲家包管理平台的成功,现在有许多版本的很多包。根据您的 composer.json 设置 (minimum-stability),这会导致很大的复杂性,进而需要大量内存。例如,请参阅github.com/composer/composer/issues/1898 和其他票证。
      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 2015-02-12
      • 2016-05-28
      • 2014-06-01
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多