如何提高WordPress中的PHP内存限制

你的插件不工作。您的网站未加载。您不断看到“Allowed memory size exhausted”错误,并且一直说增加您的PHP内存限制。那是什么,你如何解决它?

PHP内存限制的存在是为了阻止占用RAM的资源使您的网站崩溃。但有时它也可能导致问题,例如当您安装需要一点额外功能的插件并最终切断对您网站的访问时。

当您因内存不足而遇到白屏死机时,您需要立即修复此问题。让我们来看看PHP内存限制是什么,以及如果达到资源上限如何解决它。

  1. 什么是PHP内存限制?
  2. 如何在WordPress中增加PHP内存限制
  3. PHP内存限制应该是多少?

什么是PHP内存限制?

PHP内存限制设置您网站上的任何脚本可以使用的最大内存量。但这究竟是什么意思?

您的网站由服务器提供支持,这些服务器只是用于保持网站后端运行的专用计算机。与普通计算机一样,它们使用处理器、存储和RAM(也称为内存)等组件。

RAM是服务器最重要的部分之一。每个程序和应用程序都会占用一点内存。程序越密集,占用的内存就越多。当您的内存不足时,您的网站将运行缓慢甚至拒绝加载。

Web应用程序(例如WordPress插件)是可能占用服务器内存的众多事物之一。通常,这些应用程序占用的空间非常小,除非您的主机给您的内存非常少,否则您永远不会遇到任何问题。

但是对于任何PHP应用程序的脚本可以在您的服务器上占用多少内存也有一个硬性上限。当其中一个脚本超过限制时,您就会开始遇到问题。

您会看到一个带有错误的白屏,甚至可能会禁止您访问整个网站。

为什么有内存限制?

想象一下,您的服务器出了点问题。也许一个程序陷入无限循环并不断占用越来越多的内存,或者攻击者诱骗您安装运行恶意脚本的东西以占用您的所有资源。

当PHP进程失控时,内存限制会在它们导致整个服务器崩溃或耗尽当月所有分配的资源之前对其进行硬性阻止。

大多数合法的PHP脚本都很小。每个单独的脚本应该只占用少量的RAM,除非你有一个不寻常的程序需要在一个脚本中比大多数程序作为一个整体占用更多的资源。这些类型的插件当然存在,但很少见。

如果您的内存不足,则很有可能存在损坏或恶意的PHP程序,因此会出现内存限制错误。

但有时你确实在使用需要额外内存的大型插件。一些Web主机还将PHP内存限制设置得非常低,因此即使您没有安装异常耗电的应用程序,也会导致出现错误。

无论哪种方式,您都会很快遇到内存耗尽错误。

内存耗尽错误

所以你遇到了内存耗尽错误。您可能会在整个站点中或在执行某些功能(例如提交表单)时遇到带有错误消息的白屏。

出现在WordPress中的内存限制耗尽错误

出现在WordPress中的内存限制耗尽错误

这是一个严重的问题,尤其是当它影响您的整个网站时。过去的每一个小时都会有很多迷路的游客。

罪魁祸首可能是一个非常大或配置错误的插件。因为WordPress插件是用PHP编码的,所以它们受PHP内存限制的限制。

您可以通过一一禁用插件来找到导致问题的插件,直到重新访问您的站点。一旦你确定了它,检查文档并查看它是否说明它需要运行多少内存。

如果没有迹象表明它应该是一个非常强大的插件,您可能需要向插件开发人员提交一张票,因为它可能是错误的。请记住,PHP内存限制仅影响单个脚本,而不影响整个插件。因此,脚本很有可能陷入无限循环或其他故障。

这个问题也可能在你身上。也许您的内存限制设置得太低,因此只有最小的插件才能正确运行。或者,也许您正在尝试安装一个插件,该插件要求您将限制提高到比正常水平更高的水平。

无论哪种情况,您都应该尝试增加PHP内存限制。现在让我们向您展示如何做到这一点。

如何在WordPress中增加PHP内存限制

在做任何事情之前,有一种简单的方法可以检查您当前的PHP内存限制,而无需挖掘任何文件。如果您运行的是WordPress 5.2或更高版本,请转到后端的工具 > 站点健康运行状况。

如果看不到,请安装运行Health Check & Troubleshooting

在WordPress中查看站点健康信息

在WordPress中查看站点健康信息

信息选项卡下,您将看到您的PHP内存限制。如果它已经设置得相当高,那么您的一个插件可能只是被破坏了。

但是,如果您发现它非常低,则需要通过编辑wp-config.php文件来增加它。

这并不总能解决问题。最终,PHP内存限制由您的Web主机设置。有时,您的站点设置为使用的资源少于主机提供的资源,调整文件可以解决此问题。但是如果他们的硬编码限制太低,无论你手动设置多高,你都无法真正增加它。

但值得一试,所以让我们现在去编辑那个文件。

PHP内存限制是多少?

不同的服务器提供商所设置的限制都不太一样,稍微良心的服务器提供商可能会给出256MB的默认PHP内存限制。这对于99%的WordPress插件来说应该绰绰有余,而且实际上远远超过了大多数插件所应采用的。

它可能仍然值得通过并确保它没有在WordPress的设置中无意中设置得太低。有可能某些东西改变了数量并减少了您可以访问的资源数量。

如何通过FTP更改PHP内存限制

要编辑wp-config.php文件,您需要使用FTP或SFTP访问您的站点。这允许您编辑影响站点运行方式的敏感内部文件。

你只会改变一条线,所以应该很容易。首先安装FileZilla或您选择的其他FTP客户端。它是免费的,所以不用担心。在开始之前,您还应该备份您的网站。在编辑核心文件时很容易意外破坏某些东西。

打开FileZilla并输入您的凭据。片刻之后,您应该连接到您的站点。

单击公共文件夹并找到wp-config.php。如果找不到public或public-html,它可能被称为root、www或您的网站名称。

在FileZilla中查找wp-config

在FileZilla中查找wp-config

打开wp配置。注意不要编辑PHP内存限制行以外的任何内容,因为这是一个敏感文件,可能会破坏您的网站。浏览它,直到找到这一行:define(‘WP_MEMORY_LIMIT’, ‘256M’);

出现在wp-config中的WP内存限制

出现在wp-config中的WP内存限制

更改此处列出的数字,保存文件,然后关闭FileZilla。

如何在cPanel中更改PHP内存限制

有些主机不允许您通过FTP编辑文件。相反,他们可能会让您访问cPanel。如果您遇到这种情况,请不要担心——您也可以通过这种方式更改您的PHP内存限制。

第一步:使用主机提供的凭据登录cPanel。在主屏幕上,您将看到一个带有选择PHP版本按钮的软件部分。

在cPanel中选择PHP版本

在cPanel中选择PHP版本

单击它,然后在屏幕顶部,您将看到Switch to PHP options。向下滚动,直到看到带有下拉菜单的memory_limit 。单击它并将其更改为您想要的设置。单击应用,您就完成了。

不是每个人都会有选择PHP版本选项。相反,您可能会看到MultiPHP Ini Editor 。如果是这种情况,您的步骤会有所不同。

cPanel中的MultiPHP Ini编辑器

cPanel中的MultiPHP Ini编辑器

您需要单击它,然后在下一个窗口中,在Configure PHP INI basic settings下,您应该打开下拉列表并选择您的域。找到memory_limit部分并输入您想要的数字。单击应用以保存您的更改。

您也可以尝试使用cPanel的文件管理器。这与通过FTP访问您的站点非常相似。在主页的文件部分下,单击文件管理器。找到您的public/public-html文件夹(或任何可能被称为的文件夹)并打开wp-config.php

找到上一节中概述的WP_MEMORY_LIMIT行,并将数字更改为您想要的。保存您的更改并确保应用它们,这就是您需要做的所有事情。

PHP内存限制应该是多少?

当您更改内存限制时,您的第一个冲动可能是将其设置为900MB 或类似的值——尽可能高。但这实际上可能是一个非常糟糕的主意

如果您网站上的脚本中断,它可能会迅速失控并使您的整个服务器崩溃。即使您的站点托管在功能强大的硬件上,一个脚本占用所有内存仍可能导致严重问题。

错误配置的脚本异常繁重,但没有破坏到导致问题的程度,也可能被忽视。大多数PHP脚本都很小,内存限制错误是后端出现问题的警告信号。将其设置得太高,您可能会在不知不觉中搞砸脚本,使您的网站陷入困境。

您应该将PHP内存限制设置得尽可能低,同时仍然允许您的站点正常运行。

128MB是一个很好的基准。这是相当大的内存量,可以处理大多数密集型插件。如果您知道您将需要一些额外的功能,那么256MB甚至可以涵盖最重的插件。如果你确定你有一个真正的强者,512MB是你应该设置的绝对最大值。在90%的情况下,您永远不需要将内存限制提高到256 MB以上。

如果更改内存限制不起作用怎么办?

如果在编辑您的PHP文件后您仍然遇到内存错误,则问题之一是两个问题之一:您的主机分配的资源很少,或者您的服务器上有一个PHP脚本占用了太多的内存。

同样,您应该检查并禁用您的插件,直到您确定罪魁祸首。使用128-256MB内存,没有插件应该占用这么多空间而不在文档中的某处提及它。禁用它并通知插件作者发生了什么。

即使在所有插件都被禁用后仍然遇到错误?一定有一些冲突或其他PHP应用程序导致了问题。这超出了您自己能够处理的范围,因此请向您的网络托管服务商寻求帮助。

如果问题根本不是插件,那么责任可能在于您的主机将内存限制设置得太低。您可能正在使用共享主机,它因分配非常少量的内存而臭名昭著 – 这是可以理解的,因为如果一个站点使用过多的RAM,它会使整个系统陷入数十个其他网站的困境。

您在这里唯一的选择是升级到提供更多资源的计划。这可能最终代价高昂,特别是如果您只是想在新站点上安装一个密集的插件。如果您还没有很多访客,那么从升级中获得的所有其他资源都不会对您有太大帮助。

您还可以切换到提供更多内存的主机。

小结

PHP内存限制的存在有一个非常正当的原因:您不希望流氓进程占用比预期更多的RAM。但是,当您在使用合法插件时达到极限并遇到白屏死机时,这可能会很烦人。

最后,取决于您的主机您可以访问多少PHP内存。如果他们设置的标准太低,就不可能提高。

但是,有时您的网站使用的资源会比您真正可以访问的资源少。在这种情况下,可以增加你的记忆力。尝试将其设置为128或256MB,因为您不希望它太高。

如果这些方法都不起作用,则可能是缺少分配的资源导致了问题,而不是需要更改的设置。联系您的主机并询问如何获得更多,或切换到提供更大内存的主机,它可以为您提供比您需要的更多内存。