网站报 500 错误排查

分类:常见问题 · 更新于 2026-11-05 · 约 1494 字

500 报错的日志定位顺序与常见成因,含 PHP-FPM、会话目录与升级后部分页面报错的修复。

一、现象与定位思路

前台或后台打开页面时返回“500 Internal Server Error”、页面空白,或只显示一句报错,都说明程序在执行过程中中断。浏览器不会告诉你原因,真正的原因一定在日志里,排查第一步是拿到真实错误。

二、按顺序查三处日志

  1. 站点错误日志:宝塔面板「网站 → 你的站点 → 错误日志」,对应文件 /www/wwwlogs/你的域名.error.log。
  2. PHP-FPM 日志:/www/server/php/82/var/log/php-fpm.log,用于确认进程是否异常退出或达到进程上限。
  3. Nginx 访问日志:/www/wwwlogs/你的域名.log,用于区分是 500 还是 502。
tail -n 50 /www/wwwlogs/你的域名.error.log
tail -n 50 /www/server/php/82/var/log/php-fpm.log
ps aux | grep php-fpm | head

若日志中没有具体报错,可临时让 PHP 输出错误(仅用于定位,排查完立即关闭):

location ~ [^/]\.php(/|$) {
    fastcgi_param PHP_ADMIN_VALUE "display_errors=On";
    fastcgi_param PHP_ADMIN_VALUE "error_reporting=E_ALL";
}

三、常见成因对照

现象常见原因处理
全站 500PHP 版本不兼容或扩展缺失站点切到 PHP 8.2,检查 pdo_mysql、mbstring、gd、fileinfo 扩展
个别页面 500模板标签写错或模板文件缺失按日志中的文件与行号定位,恢复 template/ 备份
后台保存后 500配置写入失败检查 config/、data/ 目录可写与数据库连接
验证码页 500会话目录不可写或 GD 未开启见下面一节
上传后 500上传目录不可写将 upload/ 属主改为 www 并授予写权限

四、会话与临时目录导致的 500

程序运行需要把会话数据、上传临时文件写到系统目录。当 PHP 的会话目录或上传临时目录不存在、不可写时,日志中会出现 session_start(): open(...) failed 或 Unable to create temporary file 一类信息,页面随之报 500。

# 查看当前会话与临时目录配置
php -i | grep -E 'session.save_path|upload_tmp_dir'
# 确认目录存在且 www 用户可写
ls -ld /tmp /var/lib/php/sessions

处理办法:在 PHP 设置中把 session.save_path、upload_tmp_dir 指向站点可写目录(例如 data/session、data/tmp),建好目录后改属主为 www。会话目录不要设在可被外部访问的公开目录下。

五、升级或改动后部分页面报错

若报错出现在更换程序包或改模板之后,多为文件不完整:升级包里 app/、core/ 或 template/ 的部分文件没有覆盖到位。按日志提示的文件与行号,对比备份补回缺失文件。不确定是哪一处改动引起时,用备份做最小二分:先用备份的 template/ 覆盖当前目录,刷新看是否恢复;仍报错就同样验证 app/、core/,直到缩小到单个文件。

提示:排查完成后记得关闭错误显示,清理浏览器缓存与 CDN 缓存再复测一次。

相关教程

文档对不上实际界面?可在常见问题中查找排查步骤,或按「安装部署」中的环境要求核对版本。