致命错误:在WP中添加帖子时内存不足

时间:2013-04-13 20:45:09

标签: php wordpress apache

我收到了这个令人讨厌的错误Fatal error: Out of memory (allocated 18087936) (tried to allocate 77824 bytes)。奇怪的是,它是17,25 mb(分配),它试图分配76 kb。内存限制为128MB,正如您所看到的那样,它甚至都不接近。 VPS在那一刻得到了约400mb的免费撞击。它只发生在我发布的东西而不是所有的时间。 我发现它很奇怪,并不知道是什么导致它。 如果您需要任何其他信息,请与我们联系。

9 个答案:

答案 0 :(得分:6)

错误表示内存限制为18M而不是128M。这意味着memory_limit设置为某个不同于128M的地方(本地php.ini或应用程序本身,因为PHP可以在运行时覆盖此设置)。

我建议您先创建一个名为(例如)phpinfo.php的文件,其中包含以下内容:

<?php
phpinfo();
?>

并将其放在脚本运行的位置。然后使用浏览器访问该文件并查找实际的memory_limit值。如果它仍然显示128M的“全局”和“本地”值,那么可能在代码的某处,有一个“ini_set(”memory_limit“,$ value);”打电话或类似的东西。否则,如果它是18M,请寻找可以设置的其他地方:

  • 检查您的wp-config.php文件
  • 检查任何本地php.ini文件(查看phpinfo.php页面以查看实际加载的php.ini文件的位置)
  • 检查包含此类指令的任何.htaccess文件

答案 1 :(得分:2)

希望这会有所帮助,因为我有同样的问题:

你正在遇到 WordPress自己的内存限制你的PHP memory_limit的限制。 Wordpress为prevent poorly written scripts from shutting down your whole PHP interpreter实现了此限制。不幸的是,正如你所注意到的那样,它是相当准确的。

我发现修复此问题的最简单方法是从Wordpress插件存储库安装Change Memory Limit插件。它允许您修复问题而无需手动修改任何WP文件。

插件的64M默认值可能对您没问题。

或者,如果您不想信任第三方插件,请将以下行添加到wp-config.php

define('WP_MEMORY_LIMIT', '64M');

答案 2 :(得分:2)

从这个http://wordpress.org/support/topic/fatal-error-out-of-memory-messages?replies=24#post-1929111得到它,以为我会和你们分享:

要在WORDPRESS设置的根中输入WP-CONFIG文件: 输入之后:
define('ABSPATH', dirname(__FILE__).'/'); 以下:

define('WP_MEMORY_LIMIT', '64M');

还创建了一个PHP.INI,它应该被WP-CONTENT上传给PLUGIN文件夹:

 `memory_limit = 128M; //Maximum amount of memory a script may consume (64MB)
`

max_execution_time = 45;


upload_max_filesize = 15M;


post_max_size = 30M;

希望这有帮助!

答案 3 :(得分:1)

只是一个帮助我调试这些错误的选项。

如果您有权访问.htaccess,可以试试这个:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300

如果这没有帮助,您可以尝试检查设置:

echo 'Max upload size: ' . ini_get('upload_max_filesize') . '<br />';
echo 'Max post size: ' . ini_get('post_max_size') . '<br />';
echo 'Memory limit: ' . ini_get('memory_limit');

我希望这有效,对我而言。

答案 4 :(得分:1)

我不确定这会导致错误,但值得检查。

许多最无法追踪的可悲内存错误是由以下原因引起的:

1)用户定义的异常处理程序,导致异常,因此递归。

2)上面的+试图获取发起异常的对象的类信息,并且类信息测试导致自动加载尝试,其中自动加载引发另一个异常并因此递归。

您是否做过与WP错误处理或自动加载有冲突的事情?

答案 5 :(得分:1)

我在所有Wordpress网站上安装了wp-memory-usage alexrabe插件。

此插件可帮助您查看Wordpress在PHP内存使用方面所看到的内容。其他方法可能会向您显示服务器上的PHP设置,但是这些设置通常会在您越接近浏览器中的呈现页面时被各种技术覆盖。

设置最大内存 - &gt;打开你最喜欢的文本编辑器并创建一个名为php.ini的文件;在文件中包含以下行:

memory_limit = 256M

将php.ini的副本放在Wordpress根目录中。我还将副本放在:/ wp-admin; /可湿性粉剂内容;和/ wp-includes。

答案 6 :(得分:1)

在wp-config.php文件中添加define('WP_MEMORY_LIMIT', '256M');。这是最简单的方法。

答案 7 :(得分:1)

通过网站的某处,内存限制被覆盖,在ini_set('memory_limit'的代码中进行网站搜索并查看返回的内容。

答案 8 :(得分:1)

鉴于您的phpinfo()脚本返回正确的内存使用值,这显然是在Wordpress中设置的,因此覆盖了Apache提供的值,因此使用.htaccess来应用它仍然不起作用。
此链接(http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP)表明Wordpress默认执行自己的内存管理,因此在wp-config.php中设置('WP_MEMORY_LIMIT','256M')是合乎逻辑的。

如果您对托管站点的服务器有shell访问权限,我建议您使用wordpress安装的DocumentRoot并运行以下命令:

grep -R "18M" *
grep -R -e '(WP_MAX_MEMORY_LIMIT|WP_MEMORY_LIMIT)' *

这将在您的文件中搜索字符串18M(您的内存限制似乎以人类可读的术语设置的值)以及Wordpress定义的内存限制的配置选项。我怀疑其中一个命令会返回正输出。然后你应该按照建议改变WP_MEMORY_LIMIT(尽管256M可能有点高 - 最初尝试64M,你不想让自己造成潜在的问题)。