【发布时间】:2016-05-28 23:12:00
【问题描述】:
我收到了这个错误:
PHP Fatal error: Allowed memory size of X bytes exhausted
所以,经过一番研究,我更改了我的 php.ini 文件:
memory_limit: 2048M
上一条错误消息已停止,但我收到此错误:
Fatal error: Out of memory (allocated 1746927616) (tried to allocate 268435456 bytes) in [path]
所以我有 2048M 作为内存限制,并且在我的错误中,php 文件分配了 1666M 并试图分配 256M 给 1922M。这个值小于我的内存限制,为什么我会收到这个错误? (我检查了我的 IIS 站点中的 php 信息,内存限制是我之前提到的)。
谢谢:)
编辑:
就在发生此错误的那一行之前,我做了一个
echo memory_get_usage();
我得到了:
1675848
出错的代码是这样的:
for ($i = $startKey; $i <= $endKey; $i++) {
array_push($paginas, $files[$i]);
}
【问题讨论】:
-
你是否在更改后重新启动了 APACHE??
-
@devpro 我正在使用 IIS 并在更改 memory_limit 后重新启动服务器。之后错误消息发生了变化(到我在问题中显示的最后一条)。
-
如果您在 Win32 上运行,您可能会达到每个进程 2Gb 的限制。剩下的 120Mb 左右可能被其他 PHP 数据和 Apache 本身使用。
-
你的代码到底是什么?如此高的值大多不是实际的 memory_limit 问题,而是代码设计问题。你的程序在做什么,它真的需要 2GB 吗?
标签: php memory out-of-memory