WordPress 出现 500 Internal Server Error 时,页面不会告诉你真正原因。它可能是 .htaccess 损坏、插件冲突、主题报错、PHP 内存不足,也可能是权限问题。最快的办法不是逐个文件猜,而是先打开 WP_DEBUG,让错误日志直接指出文件名与行号。
第一步:打开 WP_DEBUG 看真实报错
编辑网站根目录的 wp-config.php,加入或修改以下常量:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
如果后台也进不去,用 FTP/SFTP 直接改文件。WP_DEBUG_DISPLAY 设为 false 是为了避免错误信息直接暴露给访客。修改后复现一次报错,再查看 /wp-content/debug.log,90% 的情况里面会写着具体是哪一个插件或主题文件报错。
常见根因与快速修复
| 现象 | 最可能原因 | 快速操作 |
|---|---|---|
| 整站 500,后台也进不去 | .htaccess 损坏 | 重命名 .htaccess,到后台 设置 → 固定链接 重新保存 |
| 安装/更新插件后 500 | 插件冲突 | FTP 重命名 /wp-content/plugins 文件夹,逐个启用排查 |
| 主题代码不兼容 | FTP 重命名当前主题目录,WordPress 会回退到默认主题 | |
| 导入大文件或批量操作时报错 | PHP 内存耗尽 | wp-config.php 加 ini_set(‘memory_limit’,’512M’) |
| 上传/更新文件后 500 | 文件权限错误 | 目录 755,文件 644;避免 777 |
踩坑实录:删掉 .htaccess 还是 500
有一次客户站点整站 500,后台完全进不去。我第一反应是 .htaccess 损坏,直接重命名了它,结果仍然是 500。打开 wp-config.php 启用 WP_DEBUG_LOG 后,debug.log 里写的是 Fatal error: Allowed memory size of 67108864 bytes exhausted in /wp-content/plugins/xxx/importer.php on line 142。原来是客户用某插件导入 8 万行 CSV,默认 64M 内存直接吃光。我把 wp-config.php 加上 ini_set('memory_limit','512M'),同时把 upload_max_filesize 和 post_max_size 调到 64M,导入才正常。这次让我记住:500 错误只是结果,日志才是入口。
快速自检清单
- 已开启
WP_DEBUG_LOG并复现一次错误。 - 已检查
/wp-content/debug.log中的文件名与行号。 - .htaccess 已重命名并重新保存固定链接。
- 已通过重命名
plugins文件夹排除插件冲突。 - 已切换回默认主题排除主题问题。
- PHP 内存限制已设为 256M–512M。
- 目录权限 755,文件权限 644,没有 777。
常见问题
Q:开启 WP_DEBUG 后,访客会不会看到报错?
A:只要 WP_DEBUG_DISPLAY 设为 false,错误就只写入日志,前台不会显示。
Q:找不到 /wp-content/debug.log 文件?
A:确保 wp-content 目录可写,权限 755;也可以手动创建空文件并设 644。
Q:虚拟主机改不了 php.ini 怎么办?
A:多数虚拟主机支持 .user.ini 或在 wp-config.php 用 ini_set() 覆盖。
你排查 WordPress 500 错误时遇到过什么奇葩原因?欢迎在 fenij.com 留言,一起把这份手册补全。