昨天还正常的网站,今天打开全是 “500 Internal Server Error”,后台也进不去,编辑器也没法动——这是 WordPress 运维里最常踩的坑之一。500 是个笼统的状态码,意思是「服务器跑挂了但说不清怎么挂的」,所以排查时不要瞎猜,按从外到内的顺序一层层剥下去最快。
先做两件准备工作
动手前先留个后路:完整备份一份文件 + 数据库(虚拟主机一般在控制面板一键备份,VPS 用 tar + mysqldump 就行)。再把 wp-config.php 里 WP_DEBUG 打开,让服务器「开口说话」:
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
看 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 建议 440 或 400。可以用 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 留言告诉我具体报错,我帮你接着往下看。