搜索全站
报错排查 8 分钟阅读

WordPress 报 HTTP 500 Internal Server Error 的排查与解决方法

网站或后台突然出现 HTTP 500 Internal Server Error,刷新时好时坏?本文教你从服务器错误日志入手,通过重命名 .htaccess、停用插件、切换 PHP 版本、检查文件权限等方式,一步步定位并修复 WordPress 500 服务器错误。

U
UFO_PF 2026-10-10 · 阅读 8 分钟
Wo 报错排查
阅读提示
本文约 3,041 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

访问网站时,浏览器直接甩给你一行冷冰冰的英文:Internal Server Error,下面可能还跟着「The server encountered an internal error or misconfiguration and was unable to complete your request」。你刷新一下,有时能进有时进不去,有时首页正常但后台一路 500。跟白屏不同,500 是服务器明确告诉你「我出错了」,只是它没告诉你错在哪。500 属于 HTTP 状态码里的「服务端错误」大类,意思是请求已经到达服务器,但服务器在处理脚本时崩了。对 WordPress 来说,触发 500 的元凶通常是三种:.htaccess 规则写坏、PHP 脚本报致命错误、以及 PHP 版本或内存出问题。它和白屏常常是「一家人」——同一个致命错误,服务器开了错误显示就是 500 页面,关了错误显示就变成白屏。这篇就从服务器日志入手,一步步把 500 拆开解决。

故障原因分析

  1. .htaccess 规则错误。这是 500 出现频率最高的原因。你装了某个插件或手动改了固定链接,WordPress 会往根目录的 .htaccess 写入重写规则,一旦规则语法出错或多了一条不合法的指令,Apache 在处理每个请求时都会报 500,整站直接打不开。
  1. PHP 致命错误。主题 functions.php 或插件里有语法错误、调用了不存在的函数、函数重复定义,PHP 执行中断,服务器返回 500。
  1. PHP 版本不兼容。主机把 PHP 升到 8.x,而主题或插件是老代码,运行时抛出致命错误,表现为 500。
  1. 内存超限。PHP 可用内存耗尽,脚本被强制终止,也会返回 500,这种情况通常伴随 Allowed memory size exhausted 字样。
  1. 文件权限不对。目录权限被改成 777 或文件属主错误,部分服务器出于安全策略会直接拒绝执行并返回 500。

分步解决方案

方法一:重命名 .htaccess(最快验证)

用 FTP 或主机文件管理器进入网站根目录,找到 .htaccess 文件(默认可能隐藏,记得开启「显示隐藏文件」)。把它改名为 .htaccess_bak,然后刷新网站。

.htaccess  →  .htaccess_bak

如果 500 立刻消失,就说明问题出在重写规则上。这时你到后台「设置 → 固定链接」,什么都不改,直接点一下「保存更改」,WordPress 会重新生成一份正确的 .htaccess。生成的规则大致是这样:

# .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

方法二:查看服务器错误日志

500 最靠谱的线索在日志里。宝塔面板用户可以在「网站 → 错误日志」里看;cPanel 用户看 error_log 文件;虚拟主机一般在控制面板有「错误日志」入口。重点找最近几条带 PHP Fatal error 的记录,它会直接告诉你出错的文件和行号。

[10-Oct-2026 09:12:33 UTC] PHP Fatal error: Uncaught Error: Call to undefined function wp_get_theme() in /www/wwwroot/site/wp-content/themes/demo/functions.php:42

上面这条就明确指向了 functions.php 第 42 行。

方法三:用调试模式定位脚本错误

在 wp-config.php 里打开调试日志:

// wp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

复现 500 后打开 wp-content/debug.log 查看最新错误。定位到具体文件后,用编辑器修正语法。

方法四:隔离插件与主题

日志看不太懂时,用「隔离法」:把 wp-content/plugins 整个改名停用所有插件,再刷新网站。

wp-content/plugins  →  wp-content/plugins_off

恢复了就是插件冲突,把文件夹名改回来,到后台逐个启用,找到触发 500 的那个删除。插件排除后仍是 500,就把当前主题文件夹改名,让 WordPress 回退默认主题,判断是否主题问题。

方法五:调整 PHP 版本与内存

在宝塔或 cPanel 里把站点的 PHP 版本切换到 7.4 试试,若能恢复说明是不兼容问题。同时在 wp-config.php 提高内存上限:

// wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

方法六:检查文件权限

正确的权限一般是:目录 755,文件 644,wp-config.php 可设为 600。若你看到大量 777,改成标准权限再试。注意不要图省事把所有文件都设成 777,那会带来安全风险而且有些主机就是因此拦截请求。

常见踩坑点

  1. 把 .htaccess 改名后忘了恢复。修复固定链接后,.htaccess_bak 可以删掉,避免服务器上残留两份规则造成混乱。
  1. 用记事本编辑后上传导致编码问题。编辑 .htaccess、wp-config.php 请用支持 UTF-8 无 BOM 的编辑器,纯文本编码出错本身就会引发 500。
  1. 只盯着前台不管后台。后台 500 往往是某插件在 admin 里加载时报错,用 plugins 改名法一样有效,不要以为后台坏了就得重装。
  1. 忽略主机商的事故。有时 500 是服务器本身宕机或配置变更,先问问主机商有没有维护公告,别一个人埋头排查半天。
  1. 改完不清理调试代码。WP_DEBUG 上线后必须关掉,否则错误详情会被访客看到,暴露服务器路径等信息。

总结

WordPress 出现 HTTP 500 Internal Server Error,最常见的三张牌是 .htaccess 规则、PHP 脚本致命错误和 PHP 版本/内存问题。排查顺序建议先看服务器错误日志拿到具体文件名和行号,再用「重命名 .htaccess」「停插件」「换主题」做隔离实验,最后检查权限、内存和 PHP 版本。跟白屏相比,500 的好处是服务器愿意给出线索,你只要顺着日志走,基本都能定位到某个文件。修好后别忘了清理备份文件和调试开关,让站点恢复干净稳定的状态,这样下次再遇到 WordPress HTTP 500 你也能从容应对。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。