WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)

Posted

技术标签:

【中文标题】WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)【英文标题】:WordPress PHP Fatal error: Out of memory (allocated 2097152) (tried to allocate 4096 bytes) 【发布时间】:2017-03-02 01:51:18 【问题描述】:

关于这个错误已经问了很多问题,但我找不到适合我的情况的解决方案,所以我创建了一个新问题,希望得到两个非常具体的问题的答案:

1. 2097152这个数字从何而来?

在我的 php.ini 中,我将 memory_limit 设置为 256M,在我的 wp-config.php 中,我将 WP_MEMORY_LIMIT 和 WP_MAX_MEMORY_LIMIT 设置为 256M,所以我预计会收到错误,指出已分配和超过 268435456 个字节,从 2097152 开始来了?

2097152 = 2048K = 2M,我查看了 Apache、PHP 和 WordPress 文件夹中的所有文件,但找不到任何使用的值,请帮助。

2。为什么尝试分配的金额 (4096) 少于分配的金额 (2097152)?

有人可以解释一下,我在这里缺少什么吗?

【问题讨论】:

你在哪里得到错误?在前端还是后端(wp-admin)端? @Valdas 你检查过你的wordpress根目录下是否有php.ini文件吗? 与 WP_MEMORY_LIMIT 无关,与 PHP memory_limit 有关。可能需要联系您的房东。 ini_get('memory_limit') 返回什么? IE;外部 wp 安装。 @vrajesh Apache 日志充满了这个错误,我不知道如何检查是前端还是后端负责。 【参考方案1】:

您的 PHP 应用程序可能使用了过多的内存。可能的原因可能是无限循环、加载到变量/数组的数据过多(可能来自数据库)等。您不应依赖增加内存大小,而应找到导致问题的原因并在那里解决。

使用

error_log("Memory Usage: " . (memory_get_usage()/1048576) . " MB");

并将其放置在您怀疑存在内存泄漏或似乎导致问题的代码的特定位置。

【讨论】:

我有一些怀疑是插件widged可能是原因,但我不知道把它放在哪里,例如我尝试在第168行和第187行的class-wc-widget-products.php文件中,重新启动了Apache,但是错误日志中没有出现任何内容。 基本上是反复试验。如果需要,可以将它放在每个方法的开头和结尾,修改标签以识别它正在执行的代码部分。您会注意到在某些时候它会占用内存,并且如果在方法执行后它没有释放它。从那里你可能会找到罪魁祸首。 不使用标签,而是添加 __FUNCTION____FILE__ 之类的内容

以上是关于WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)的主要内容,如果未能解决你的问题,请参考以下文章

构建树时PHP致命错误内存不足

致命错误:X:\wamp\www\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节)

致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足 |反应

如何修复“致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足”错误

致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误

致命错误:接近堆限制的无效标记压缩分配失败 - Ionic 3 中的 JavaScript 堆内存不足