Joomla 网站上的内存不足错误与允许内存错误

我们知道,距离我们上次在这个博客上写一篇文章已经有几周了——我们并没有偷懒,只是我们在 12 月有不少大型项目。尽管如此,我们还是感到内疚,所以我们决定现在写一篇文章,如果你想知道现在是什么,那么现在是美国东部标准时间 2016 年 12 月 31 日晚上 8:52。是的,今天是除夕夜,我们正在写一篇博文!

好了 - 这个介绍就够了。让我们从多汁的东西开始......

作为 Joomla 管理员,您可能已经在 Joomla 网站上看到过以下错误之一(或者您可能已经看到了这两个错误):

致命错误:允许的内存大小为 x 字节已耗尽(尝试分配 x 字节)

致命错误:内存不足(已分配 x)(尝试分配 x 字节)

对于未经训练的人来说,上述错误看起来或多或少是相同的:它们看起来像一个内存问题,这是正确的,它们是内存问题。但是,它们是完全不同的内存问题。不幸的是,大多数 Joomla 管理员认为上述错误是相同的,他们认为本文中提出的解决方案可以解决这两个错误。事实并非如此......

事实上,增加 php.ini 或 .user.ini 文件中的memory_limit可能会解决第一个问题,但肯定不会解决第二个问题。你看,第一个问题意味着 Joomla 网站已经超过了 PHP 实例允许的内存限制,而第二个问题意味着 Joomla 网站已经用完了所有可用内存。让我们给你举个例子......

假设您的默认 php.ini 的内存限制为 32 MB,并且您的服务器上有 2 GB 的 RAM。.如果您的 Joomla 网站上的页面超过 32 MB,那么您将看到允许的内存...致命错误。但是,如果您的 php.ini 文件中的内存限制设置为非常高的数字,例如 4096 MB(或 4 GB,这不应该是这种情况),并且您的服务器上有 2 GB 的 RAM,那么如果您的 Joomla 网站上的页面需要超过 2 GB,那么您将看到内存不足致命错误。

现在,如果您非常仔细地阅读上述段落,那么您的问题将是,为什么在现实生活中,有人会看到内存不足致命错误?问得好!

事实上,在实际场景中,永远不会引发内存不足致命错误,因为服务器的所有内存都已耗尽,引发该错误是因为超出了在 Apache 级别设置的硬限制,并且该硬限制是使用 Apache 中的 RLimitMEM 指令设置的。例如,在 httpd.conf 文件中包含以下内容...

RLimitMEM 33554432

…意味着您的 Joomla 网站上的内存使用量有 32 MB 的硬性限制,这意味着您的 Joomla 网站上需要超过 32 MB 的任何页面都将引发内存不足致命错误(假设 PHP memory_limit高于 32 MB,否则,该页面将引发允许的内存致命错误)。

那么,如何解决“内存不足”致命错误呢?

显然,解决此类错误可以通过注释掉 httpd.conf 文件中的整个 RLimitMEM 行,或者将 RLimitMEM 的值(也在 httpd.conf 中)增加到更高的值,然后重新启动 Apache 来完成。请注意,如果您使用的是 WHM,则可以从 WHM 中更改 RLimitMEM 的值,方法如下:

  • 以 root 身份登录 WHM 控制台。
  • 在左上角的搜索框中,搜索 Apache Configuration

  • 单击 Apache 配置

  • 向下滚动一点,然后单击 Memory Usage Restrictions

  • 在 Configure Apache RLimits 页面中,您可以禁用 RLimitMEM,也可以将其设置为更高的值。请注意,您需要重新启动 Apache 才能使设置生效。

如果您看到问题并且您正在使用共享主机,那么您应该联系您的托管公司,他们可能会为您增加它(但不要屏住呼吸,因为他们很可能不会)。

公司简介

 

自1996年以来,公司一直专注于域名注册、虚拟主机、服务器托管、网站建设、电子商务等互联网服务,不断践行"提供企业级解决方案,奉献个性化服务支持"的理念。作为戴尔"授权解决方案提供商",同时提供与公司服务相关联的硬件产品解决方案。
备案号: 豫ICP备05004936号-1

联系方式

地址:河南省郑州市经五路2号

电话:0371-63520088

QQ:76257322

网站:800188.com

电邮:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。