致命错误:内存大小已超出允许范围268435456字节(尝试分配71字节)

53

当我尝试打开wordpress脚本中的仪表板页面之一时,出现错误。

错误信息如下:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 71 bytes) in /home/admin/domains/filesick.com/public_html/wp-includes/taxonomy.php on line 2685

我问了一些人,被告知需要将memory_limit增加到高于256M的某个值,因此我将其更改为512M,但问题仍然存在。然后我将它更改为3024M,但仍无法解决问题。

所以,您能告诉我该如何解决这个问题吗?我应该怎么做?

等待您的回复。


1
听起来你的内存限制更改没有被应用。你可能正在编辑错误的文件。尝试在与你的WordPress安装相同的目录中运行php_info()脚本,并检查实际的memory_limit输出。 - Loopo
2
猜测你的代码出现了无限循环。 - andrewsi
好吧,这不是我的代码,而是我付钱给的程序员编写整个网站的代码。他说这不是他的问题,而是应该检查服务器。 - Tarek Ezzat
2
这意味着您的编辑并未更改内存限制。这可能有多种原因,但在 wp-config.php 中有一个设置 define("WP_MEMORY_LIMIT", 512); - Loopo
1
@loopo 非常感谢,它可以工作了。 - Tarek Ezzat
显示剩余5条评论
3个回答

69

WordPress 会将 PHP 的内存限制覆盖为 256M,因为假设之前设置的值对于呈现仪表板来说太低了。您可以通过在 wp-config.php 中定义 WP_MAX_MEMORY_LIMIT 来覆盖此设置:

define( 'WP_MAX_MEMORY_LIMIT' , '512M' );

我同意DanFromGermany的观点,256M对于渲染仪表板页面来说确实是非常大的内存。更改内存限制只是在解决问题上打了个临时补丁。


非常感谢,Dave。它起作用了,但请问这是什么意思?问题出在哪里?是编码人员还是服务器导致的问题?谢谢。 - Tarek Ezzat
这取决于代码正在做什么,可能有使用如此多内存的合法原因,例如处理大文件,但即使对于大文件,也可以有一种以块的方式处理它而不是将整个文件读入内存的方法。 - Loopo
1
有时候问题出在平台本身。例如,在WordPress(3.8.3)的代码/wp-includes/wp-db.php中,从第1240行开始,有一个循环,它应该将数据库查询结果累加到一个数组中。但是在我处理大约26,800篇文章时失败了。现在我无法确定WordPress团队为什么选择一次性加载所有文章,但管理员仪表板因此而失败。 - KalenGi
@dave,有什么区别吗?'WP_MEMORY_LIMIT' - borayeris
2
@borayeris WordPress假定管理员部分将使用更多的内存,因此WP_MEMORY_LIMIT通常控制可用的最大内存,而WP_MAX_MEMORY_LIMIT仅在管理页面上设置最大内存。这是一个可怕的命名方案,但它可以追溯到WordPress 2.5,现在没有人敢改变它。请参见http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP - Dave Ross

21

我曾遇到这个问题。我在互联网上搜索了所有的建议,更改了配置,但问题仍然存在。最后,在服务器管理员的帮助下,他发现问题出在MySQL数据库列定义中。一个表中的一列被分配为“Longtext”,导致分配了4,294,967,295字节的内存。如果您不使用MySqli准备语句,它似乎工作正常,但一旦您使用准备语句,它会尝试分配那么多内存。我将列类型更改为Mediumtext,需要16,777,215字节的内存空间。问题解决了。希望这可以帮助。


2
这就是导致我的PHP应用程序(Laravel)分配超过256M的原因 - 作业表(由Laravel自动创建用于排队)包含LONGTEXT!我将其更改为MEDIUMTEXT(16MB,足够多)。 - Leon

7

我通过修改.htaccess文件中的内存限制,解决了这个问题。

我试图使用一款杀毒插件扫描我的网站,但是遇到了这个问题。我在WordPress文件夹中的.htaccess文件中添加以下内容以增加内存:

php_value memory_limit 512M

扫描完成后,我删除了这行代码,以使文件恢复到原来的大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接