阅读时间17分钟 (3473字)

如何解决Joomla错误500 - 抱歉,我们无法从这个问题中恢复过来。

500-ERROR

抱歉,我们无法从这个问题中恢复过来。

服务器返回了“500 - 哎呀,好像出了点问题。”

谢谢,Joomla。我知道。我的网站不工作了。你能给我更多信息,这样我就可以修复这个该死的东西吗?

这太没用了。更糟糕的是,它是一个又大又丑的红屏。它甚至不再是我的网站的风格了。我做了什么?我丢失了一切吗?我的所有工作都白费了吗?我被黑了吗?也许我不应该按那个按钮?

我根本不知道如何解决这个问题或出了什么问题。

我可以猜测。我可以开始疯狂地向开源之神祈祷,希望他们能让我恢复美丽的网站。

或者也许你可以采取我的方法。对着电脑大声咒骂,发脾气。

也许你可以尝试你能想到的一切。清空缓存。重启你的电脑。通常有帮助的东西。还是不起作用吗?

这是因为这是一个服务器问题。一个令人讨厌的服务器问题。

也许你可以问问你的主机。也许他们也不怎么有用。也许他们给你一些并不真正有帮助的通用信息。让我们说实话,一些主机对Joomla一无所知。所以,他们不会给你有价值的建议。

也许他们会检查错误日志。“抱歉,日志没有显示任何错误,这肯定是你CMS的配置问题。”嗯……也许他们是对的。也许这不是PHP错误。也许他们需要寻找的是其他东西。或者你需要寻找的是其他东西。

我录制了一个视频,带您通过这些步骤,这可能会让事情更清晰。

https://youtu.be/tumIyXVeFaQ

此故障排除文档最初创建在Square Balloon网站,Joomla专家16年多

那么我们如何解决这个问题呢?

让我们先让Joomla提供更多信息。我们不能随意调查事情,我们需要线索。

步骤1. 启用Joomla的调试功能。

让我明确一下。这将在99%的情况下解决你的问题。或者给你更多线索。这始终是第一步,也将一直是

但如何做到这一点?我听到你在屏幕上愤怒地尖叫。

嗯,你说得对。你无法登录。管理员也有500错误屏幕!

没问题。这个设置由configuration.php文件控制。你可以通过FTP登录,或者通常在你的托管服务中有一个文件管理器。两种方法都可以,没有区别。

选择你的方法,并导航到你的Joomla网站。我的通常在public_html文件夹中。但这取决于你的服务器。

找到configuration.php并搜索或滚动,直到找到

public $debug = false;

你需要将此值更改为true

public $debug = true;

完成这些操作后,你可以保存文件。如果你使用FTP,你应该上传该文件。上传后,刷新FTP软件(称为FTP客户端,例如FileZilla)。

现在再次打开configuration.php文件,确保你的更改已反映出来。我曾见过文件没有改变的情况。在某些服务器上,它似乎是一个受保护的文件。这些可能是需要更新的文件权限。

请注意,Joomla.org推荐目录权限为755,文件权限为644。

配置完成后,configuration.php的权限应该是444。

如果FTP不起作用,你应该使用托管服务中的文件管理器,例如cPanel有一个文件管理器。在那里你应该编辑configuration.php文件。根据上述说明将Joomla的调试选项设置为true,然后保存。

刷新你的网站。

你会看到很多更多的信息,帮助你理解导致问题的原因。

首先,仔细阅读整个页面寻找错误信息。

别忘了检查浏览器标签页的标题,这也可以给你线索。

一些常见错误

无法实例化MySQL

如果你查看屏幕底部,它会说无法访问MySQL数据库。这是一个明显的迹象,表明一个或所有凭证都不正确。

可能是数据库名称、数据库用户或数据库密码不正确。与你的主机或在你的托管设置中检查详细信息,并确保你在configuration.php文件中有相同的数据。

以下是您需要的三个设置

数据库

public $db = 'yourdatabase_name;

数据库用户

public $user = yourdatabaseuser_name';

数据库密码

public $password = 'YOURPASSWORD;

如果你看到一个文件名被引用

很可能它会显示一个文件名。也许你不知道该文件做什么,或者你没有编辑它。也许你不是开发者。没关系。深呼吸,你不需要是开发者。

你需要知道的是,这个文件导致了问题。你可能想检查它是否与您刚刚安装或更新的组件、模块或插件有关。如果是这样,那么更新可能存在错误。因此,你可能想要注意这一点,以防未来的更新。你应该始终在网站的开发/测试版本(一个副本)上完成更新,以避免在实时网站上出现任何问题。这给你更多的时间来调试问题,并在必要时向插件开发者报告。

如果您不知道PHP,该如何解决这个问题呢?答案是:您无能为力。您只需要禁用那个插件即可。为什么?您可能会反驳说:“我需要那个插件。”

当然,但我们要确保的是,确实是我们需要检查的那个插件,而不是其他东西。让我们排除(或包含)它,然后再决定是否有问题。

有两种方法可以检查这个问题。

第一种方法是我认为最快、最安全、最简单的方法,就是重命名该组件、模块或插件文件夹。

使用FTP或文件管理器导航到文件夹。

组件显然位于“components”文件夹中。

每个组件都以com_开头。因此,所有Joomla文章都存储在名为com_content的组件中。这个组件不太可能是问题所在。全世界有成千上百万的Joomla安装。您可以根据这个假设,如果它是足够大的问题,那么它应该会很快被修复。

话虽如此,如果您确实发现了一个真正的错误,您可以在Joomla GithubJoomla问题跟踪器上报告。这两个链接是相关的,所以您报告哪个都无关紧要。

但为了这个500错误,让我们假设这不是Joomla核心问题。虽然对Joomla大喊大叫并责怪它很有诱惑力,但它在全世界范围内成功应用,如果它出了问题,那么每个人都会有问题。

让我们假设这是您安装或更改的东西。您刚刚安装了一个组件吗?也许它与这个版本的PHP不兼容?您可以询问开发者最低的PHP要求。也许它与这个版本的Joomla不兼容,但 somehow它已经安装了。或者,您可能已经从较旧的Joomla升级了。

其实并不重要,就像所有这些步骤一样,我们只是在尝试确定问题所在。

找到组件,并重命名文件夹(不要删除)。我通常在前面放两个短横线。

例如,如果您看到一个错误消息,看起来可能与com_akeebabackup有关,我会把components文件夹重命名为–-com_akeebabackup。这样,文件夹就无法通过代码访问,因为它会在错误的位置查找。

完成之后,刷新您的网站。

如果它正常工作,您就知道组件出了些奇怪的问题。

如果没有任何变化,即它仍然有问题,那么可能不是那个组件,我会将其重命名为原始文件夹名称。

在执行这些检查时,一个关键点是,我们一次只检查一件事。

对于插件,它们位于插件文件夹中,但通常在子文件夹中,如system或另一个子文件夹。线索将出现在您看到的错误消息中。

模块位于模块文件夹中,并以mod_开头。规则都是一样的。

您可能会看到错误的一个最终位置是在覆盖中。这些位于templates/YourTemplateName/html/和子文件夹中。

您至少应该找到足够的信息来识别它,然后修复它,或者当向他人寻求帮助时提出更好的问题。我在本文档的末尾列出了您可以找到帮助的所有地方。

第二步:.htaccess问题?

这同样是一个容易检查的问题。就像这篇文章中的其他部分一样,您实际上不需要理解.htaccess或其中任何代码。我们只想排除这个可能性。

您可以通过FTP或托管文件管理器访问您的文件。一些托管服务不显示隐藏文件,而.htaccess被认为是隐藏文件。您需要确保您可以看到隐藏文件,以便您可以编辑它。

在我主机的cPanel中,右上角有一个名为“设置”的按钮。有一个选项是“显示隐藏文件”。

一旦您可以看到.htaccess文件,就重命名它(不要删除它)。我通常将其命名为--.htaccess

重命名后,请刷新您的页面。

如果成功了,.htaccess 是问题所在;如果没有成功,那么很可能不是。如果不是问题所在,请将文件名改回 .htaccess 并继续下一步。

如果是问题所在,那么您的 .htaccess 文件存在问题。

如果您对 .htaccess 了解不多,请不要担心,我有一个快速解决方案。在许多情况下您都需要 .htaccess,因为它控制了 SEF URL 的重定向。它还添加了一些重要的安全功能。

如果您使用 FTP 或您的主机文件管理器查看您的 Joomla 目录,您将找到一个名为 htaccess.txt 的文件。

这是原始 Joomla .htaccess 文件的副本。它非常有用,因为您知道通常它是可以工作的。

将其重命名为 .htaccess。别忘了去掉末尾的 .txt。

刷新您的站点。网站加载了吗?您还应该检查更改页面时它们是否工作。

如果是这样,那么您知道在 .htaccess 文件中更改了某些内容导致问题。您可以将内容复制粘贴到帮助论坛中寻求帮助。或者,如果它正在工作,您可以保留它不变。

步骤 3:询问您的托管商

为什么不呢?他们有服务器;可能是一些他们更改的设置或您无法访问的配置选项。值得询问他们。有些人不是 Joomla 专家,所以您可能会发现他们不太有帮助,但其他人超级有帮助,可以快速解决问题。

步骤 4:PHP 错误报告

通常错误 500 不会在 PHP 错误报告中显示。错误可能发生在 PHP 错误发生之前。

尽管如此,如果您已经走到这一步,打开它并不会有害。您可以在 Joomla 管理员中的 服务器 选项卡下将其设置为 最大,或者如果您无法访问,您可以使用 FTP 或您的主机文件管理器。

您正在寻找这个设置

public $error_reporting = 'none';

您可以将它改为

public $error_reporting = 'maximum';

刷新您的页面,看看现在是否有任何新的错误消息,这可能会给您提供一个关于错误的线索。

您可以在 Google 或论坛中询问帮助时使用这些错误消息。请确保复制完整的精确错误消息,以便人们尽可能容易地帮助您。

步骤 5:检查 PHP 错误日志

现在我们已经打开了错误报告,您很可能会在页面上看到错误。但在某些情况下,它们会被保存在错误日志中。

您的托管商会告诉您如何访问您的 PHP 错误日志。了解这些信息值得,这样您就可以在没有他们的情况下解决问题,这通常比提交工单要快。它们可能在您的主机登录区域/cPanel 中,或者它们可能是您服务器上的一个文件。您应该询问您的托管商。

小贴士

寻找今天日期的行。最新的行是需要关注的。它们可能给您提供有关导致问题的组件、模块、插件或文件的线索。

步骤 6:重命名模板的 error.php

我见过一些情况,其中 error.php 页面导致错误。讽刺。

别忘了检查子主题的 error.php。

将它们重命名,例如 –error.php,您的错误页面将默认为 Joomla 错误页面。

刷新您的页面。如果网站正常加载,那就是您的问题,如果不正常,请改回名字。

步骤 7:Gzip 问题?

有时Gzip在某些服务器上会导致问题。我认为这可能是由于双重Gzip或gzip PHP模块未启用(或者Apache模块,无论如何,都是gzip的问题)。

通过FTP登录或访问您的主机上的文件管理器,然后打开configuration.php

public $gzip = true;

将其更改为

public $gzip = false;

别忘了其他事情,比如Akeeba的Admin工具也可以在它们的.htaccess管理器中Gzip东西。如果您正在遵循此指南,我们已经在之前检查了.htaccess,所以这不会是问题。但如果你没有按照顺序进行,它仍然可能是问题,所以了解这一点很重要。如果您在Admin工具(或另一个组件)中使用.htaccess生成器并且它阻止了站点工作,这也值得了解。其中一个配置选项与您的服务器不兼容。只有通过尝试和错误才能找出是哪一个。逐一关闭它们,然后逐渐重新打开。或者,您可以选择一半关闭,然后重新加载页面。如果它工作,您就知道了是现在关闭的下半部分选项之一。现在打开一半。以这种方式进行并每次减半可以是一种更快的故障排除方法。

步骤8:缺少PHP模块

Joomla有一些核心PHP模块和一些可选的技术要求。

这里是他们链接: https://docs.joomla.org/J4.x:Optional_Technical_Requirements

只有您自己知道您是否决定使用缓存或其他这些区域的项目。

如果您刚刚更改了PHP版本,也许您没有开启这些模块中的其中一个,但在上一个PHP版本中它是开启的。

我可以在我的主机提供的cPanel中更改这些模块。然而,一些主机要求您使用php.ini来更新这些设置。Php.ini是PHP的配置文件。它很简单,但如果您不熟悉它,它看起来像术语。

您需要知道您正在寻找哪个设置,然后您可以搜索文件以查看是否有相关内容出现。

以下是一个使用分号注释的行的示例:;

; 允许接受的GET/POST/COOKIE输入变量的数量

;max_input_vars = 1000

如果我想让max_input_vars有一个值,我会从行首删除分号。

; 允许接受的GET/POST/COOKIE输入变量的数量

max_input_vars = 1000

第一行只是一个注释/指令,所以您可以将其注释掉,即保留分号。

然后您可以将值1000更改为任何其他数字(通常是增加)以查看是否有效。

并非所有主机都允许访问php.ini,有些主机只允许访问某些部分。也就是说,即使您更新了这个值,您的宿主也可能不允许它。他们可能会限制限制或完全不允许访问该选项。只有您的宿主才知道。

步骤9:缓存问题?

为了明确,这几乎肯定不是浏览器缓存问题。错误500是服务器问题。然而,在某些情况下,我已经看到它被某些组件缓存。所以您可以清理浏览器缓存以进行合理性检查。

这与前面的步骤非常相关,但如果您已将您的站点从实时迁移到开发或从开发迁移到实时,您的缓存设置可能会改变。

例如,我有时使用Redis。

使用FTP或您的主机文件管理器浏览您的文件,寻找session handler。以下是我的示例

public $session_handler = 'redis';

具体到我的情况,错误是redis.sock位置已更改。

public $session_redis_server_host = '/home/tpwcsquareballoo/redis.sock';

请确保这是准确的。你可能需要向你的主机请求这些信息。

无论如何,在尝试任何操作之前,你可以轻松地测试这是否是问题所在。

将行更改为:

public $session_handler = ‘file’;

刷新你的页面。

如果它工作了,这可能是缓存问题。至少你现在可以排查这个问题。

如果它没有工作,你可能值得暂时关闭缓存以解决问题,你不需要额外的变量。

但别忘了将来再次打开它。你可以在Joomla管理员中这样做

系统 > 全局配置 > 系统 > 会话处理器(下拉菜单)。

第10步:缓存处理器?

打开你的configuration.php文件(使用FTP或你主机的文件管理器)。

找到这一行

public $cache_handler = 'file';

如果最后一部分没有说‘file’,请将其更改为‘file’。

刷新你的网站。

如果它工作了,那就是问题所在,如果没有,你可以再次更改它。

第11步:发生了什么变化?

这是一份相当全面的指南,如果什么都没用,值得询问你在错误发生之前做了什么。你在服务器上安装了什么?你还做了什么吗?

第12步:寻求帮助!

到这一点,你应该已经有一些详细的信息。我建议你在寻求帮助时写下所有信息。我更喜欢Stack Exchange,但这里是你支持的选择

当然

第13步:寻求专家帮助

如果你是终端用户而不是IT高手或开发者,为什么要浪费时间感到沮丧呢?有很多专家提供付费帮助。

显然,我们也是其中之一,所以我首先推荐我的公司Square Balloon。我们与Joomla合作已有16年。

你还可以在服务提供商目录中找到更多https://community.joomla.net.cn/service-providers-directory.html

《Joomla社区杂志》上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不代表Joomla项目的官方立场

3
新加入Joomla社区?加入一个会议来获取...
土拨鼠日,但以有趣的方式进行 - 披萨、虫子,还有...
 

评论

已经注册?在此登录
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问由https://magazine.joomla.net.cn/之外的第三方提供的服务