致命错误:MAMP 更新后允许的内存大小耗尽



我知道这个问题可以在这个论坛和互联网上找到很多时间。但我似乎找不到我具体问题的答案。

我正在运行一个Drupal网站,自从MAMP从5.5更新到5.6以来,我收到以下错误: 在终端中运行composer requireFatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes)

我更新了 php.ini tot 1024MB,而不是我通过 MAMP 运行的当前 php 版本的 128MB。当我使用<?php phpinfo(); ?>将 php 文件添加到我的根目录时,我看到内存就像我想要的一样,所以 1024MB。当我查看 php ini 文件的位置时,我看到它在 MAMP 文件夹中。

但我仍然收到错误。当我在终端中运行此php -r "echo ini_get('memory_limit').PHP_EOL;"时,我再次看到 128MB。当我尝试查找正在使用 php -i|grep 'php.ini'运行的 php ini 时,我得到:

Configuration File (php.ini) Path => /etc

所以看起来 php.ini 文件在其他地方。但我不知道在哪里,也无法改变它。我该如何解决这个问题?

我还尝试使用php -d memory_limit=-1 /usr/bin/composer更改作曲家内存,但这也没有解决问题。

我的问题是,我该如何解决这个问题?如何找到使用的 php.ini 文件。或者如何更改内存限制?

更新:

在终端输出中运行php -i | grep 'Configuration File'

Loaded Configuration File => (none)

也许很高兴知道我有选项使此版本可用于命令行在 MAMP php 部分启用。

我尝试了许多关于这个的建议和其他一些堆栈溢出问题,但在我尝试之前无法让它工作:

COMPOSER_MEMORY_LIMIT=-1 composer require 'yourpackagenamehere'

在运行命令之前自行尝试 COMPOSER_MEMORY_LIMIT=-1 似乎不起作用。 不知道为什么,但我必须以与作曲家故障排除中记录的类似方式在同一个命令行上运行它们:https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

我最终将一个php.ini文件添加到计算机上的/etc文件夹中。这样,memory_limit筹集的 php 确实有效。在终端中检查它确实向我显示了正确的值。但正如Alister已经说过的那样,这并没有解决问题。问题不在于php.ini memory_limit.

我发现在会话开始时在终端中使用COMPOSER_MEMORY_LIMIT=-1会使该终端会话期间的内存限制为无限制。这解决了问题。

之后,我添加,alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"到我的bash文件,知道一切都像我预期的那样工作。

更改 php.ini 中的内存量无济于事 - 这是 Web 服务器版本的 PHP 使用的限制 - 并且为 Web 服务器提供太多可用空间可能会导致问题(至少在生产环境中运行时(。

默认情况下,当从命令行运行时,Composer 会将限制设置为 1,610,612,736 字节 - 1.5 GB。

由于您显然仍在使用 PHP 5.6,这也是一个非常大的问题。PHP 7+ 的内存效率要高得多,就像最新版本的作曲家一样。

最后,要实际解决问题:将您的要求限制为更具体,因为这可以降低内存使用量。

最新更新