【问题标题】:WordPress PHP Fatal error: Out of memory (allocated 2097152) (tried to allocate 4096 bytes)WordPress PHP致命错误:内存不足(分配2097152)(试图分配4096字节)
【发布时间】: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 日志充满了这个错误,我不知道如何检查是前端还是后端负责。

标签: php wordpress wamp


【解决方案1】:

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

使用

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

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

【讨论】:

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