上传媒体时出现内存错误,Wordpress不能使用超过96M的内存(但有512个可用内存!)

时间:2012-08-14 作者:unfulvio

我知道这是一个已知的问题,但我无法使用WPAnswers和Wordpress支持论坛中的信息来解决它。

在我的Worpdress单站点安装中,媒体上载程序总是向我抛出错误

    out of memory (allocated 99614720) (tried to allocate 3760 bytes) 
分配的内存量或多或少都是相同的-大约是96M。。。但在我的服务器中,php内存限制设置为512M,帖子大小为12M,最大上传大小为8M

这是一个VPN服务器,上面有1.5GB内存!

Wordpress也会在小于等于300-400K的图像上抛出错误。

我试过使用

    define(\'WP_MEMORY_LIMIT\', \'128M\');

   define(\'WP_MAX_MEMORY_LIMIT\', \'128M\');
但这两个(单独或一起)都不起作用,事实上抛出的错误总是相同的,我的印象是Wordpress忽略了这两个-我也尝试了其他设置,错误总是相同的,分配的内存量或多或少相同

我试图更改php设置,比如将内存限制降低到128M或再次恢复到256M,重新启动http服务(apache)并重新启动整个服务器,但什么都没有改变

我开始禁用插件,但唯一的办法似乎不是它们最终导致问题。

我决定编辑media的第257行。wp中的php包含文件夹,因为错误总是来自第258行,之后执行该行

   @ini_set( \'memory_limit\', apply_filters( \'image_memory_limit\', WP_MAX_MEMORY_LIMIT ) );
我已将WP\\u MAX\\u MEMORY\\u LIMIT替换为96MB以上的值,例如128M或256M

但无论如何,分配的内存从未超过96MB。我尝试将WP\\u MAX\\u MEMORY\\u限制降低到16M、32M等值。。。任何低于96的。好在这种情况下,分配的内存会降低,因为事实上我设置了一个较低的限制-但为什么它不能超过96?尽管如此,我不明白为什么wordpress需要这么多,但为什么我不能设置为128,看看问题是否最终得到解决?我只是遇到了图像上传程序的问题。

我甚至试着用

    @ini_set( \'memory_limit\', \'128M\' );
在我的wp配置中,但它不会更改96M限制。。。但是,如果我将其设置为96以下的任何值,它都可以将其降低(由此产生的内存错误将声明相应的值)

我已经在Wordpress安装的地方运行了phpinfo,可用内存确实是服务器上设置的。。。512M!所以我不明白为什么Wordpress不管怎么说都用得比这少

有什么线索吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:Otto 整理而成

你把问题看错了。您看到的错误不是来自WordPress的错误,而是PHP错误。

不知何故,在某个地方,某些东西将内存限制在96M,而不是WordPress在做这件事。

问题是:WordPress实际上无法限制大多数服务器上的内存。我知道它试图使用ini\\u集等来增加限制,但这更像是以防万一。有时它可以设置更高的限制。大多数时候,PHP只是忽略了这一行。

你也误解了记忆的工作原理。“Wordpress也会在小于等于300-400K的图像上抛出错误”这句话就清楚地表明了这一点。压缩图像的大小与未压缩图像在内存中的大小几乎没有关系。这就是决议的全部内容。百万像素至关重要。一个像素需要4个字节。800万像素(800万像素)需要32兆字节的内存来表示,得到的压缩JPG的大小无关紧要。WordPress也需要在内存中保存图像的两个副本,一个是原始图像,另一个是创建修改版本的图像。所以是的,需要很多很多的内存。

但是,WordPress在大多数情况下都无法设置内存限制。因此,有一些因素将其限制在9600万。这将严重限制WP可以处理的最大图像大小。在你找到96M限制的来源之前,看看WordPress的核心代码,这是在浪费你的时间。

结束