首页 > Wordpress > 正文

WordPress 出现 500 Internal Server Error 怎么办?四步定位根因与修复

fenij 2026-08-11 43 Wordpress

昨天还正常的网站,今天打开全是 “500 Internal Server Error”,后台也进不去,编辑器也没法动——这是 WordPress 运维里最常踩的坑之一。500 是个笼统的状态码,意思是「服务器跑挂了但说不清怎么挂的」,所以排查时不要瞎猜,按从外到内的顺序一层层剥下去最快。

先做两件准备工作

动手前先留个后路:完整备份一份文件 + 数据库(虚拟主机一般在控制面板一键备份,VPS 用 tar + mysqldump 就行)。再把 wp-config.php 里 WP_DEBUG 打开,让服务器「开口说话」:

🛠️
开启调试
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
📄
查看日志
/wp-content/debug.log
看 Fatal error 那行
💾
先备份
文件 + 数据库
留个回滚点

按频次从高到低排查

社区里 500 错误大概八成落在下面这几个原因上,按这个顺序排查效率最高:

可能原因 出现频次 快速验证方法
.htaccess 损坏 最常见 重命名为 .htaccess_old,刷新看是否恢复
PHP 内存耗尽 常见 debug.log 含 “Allowed memory size exhausted”
插件冲突 常见 重命名 plugins 文件夹,逐个启用排查
PHP 版本过旧 偶发 主机面板切到 7.4 / 8.x 试试
文件权限错 偶发 目录 755,文件 644,wp-config 建议 440

第一步:先试重命名 .htaccess

这是 2 分钟能修好的高频原因。FTP 连上服务器,把网站根目录下的 .htaccess 改成 .htaccess_old(不要直接删,万一不是它还能恢复)。浏览器里强制刷新(Ctrl+F5)再看一眼——

如果网站回来了,去后台「设置 → 固定链接」点一下「保存更改」,WP 会自动写一份新的 .htaccess。如果还是 500,那就继续往下查。

第二步:内存不足就调高上限

debug.log 里看到 “Allowed memory size of 134217728 bytes exhausted” 类似报错,就在 wp-config.php 里加上:

define('WP_MEMORY_LIMIT', '256M');

256M 还不够就上 512M。Elementor、WooCommerce 这种吃内存大户,给低了分分钟爆掉。改了之后记得清掉浏览器缓存再看。

第三步:插件和主题冲突

进不去后台的情况下,只能走 FTP:把 wp-content/plugins 文件夹整个改名为 plugins_old,刷一下网站。要是回来了,就是某个插件的事——把文件夹名字改回去,然后在后台一个一个启用,每启一个刷一次前端,找到 500 重新出现的那个就是元凶。

主题类似:把当前主题的文件夹改名,WP 会自动切回默认主题。要是网站恢复,问题在主题里。这种情况大多出现在更新了 PHP 大版本、但主题没跟上的时候。

第四步:文件权限和 PHP 版本

权限这套数字记不住的话直接抄:目录 755,文件 644,wp-config.php 建议 440400。可以用 SSH 批量修:

find /path/to/wp -type d -exec chmod 755 {} \; && find /path/to/wp -type f -exec chmod 644 {} \;

PHP 版本低于 7.4 的建议升一下。WordPress 6.x 系列跑在 PHP 7.4 / 8.0 / 8.1 / 8.2 都行,太老的版本早晚出问题。

常见问题

Q:500 错误和「白屏」有什么区别?
A:白屏(WSOD)是 PHP 执行到一半挂了、连错误页都没来得及输出;500 是服务器主动返回的错误码,至少知道是服务器层面出了问题。两者根因经常重叠,但 500 一般能更快定位。

Q:debug.log 里看到 “Out of memory” 怎么办?
A:先调高 WP_MEMORY_LIMIT 到 256M 或 512M;如果还是不够,八成是某个插件有内存泄漏,配合「禁用所有插件」一起排查,找到凶手后换掉或联系插件作者。

Q:能不能直接重启 PHP-FPM 或者整个服务器?
A>能,但不要只靠重启来恢复。重启是把现场清掉了,下次高峰期同一原因还会再炸。正确做法是这次顺便把根因查清楚——是 PHP-FPM worker 数不够,还是磁盘写满导致 inode 报错,这些都该顺手记下来。

如果按上面四步走完还是 500,可以把 debug.log 末尾几行粘出来,去 fenij.com 留言告诉我具体报错,我帮你接着往下看。

相关完整手册

系统化的排查与配置思路,建议顺手收藏这几篇完整手册: