小皮面板部署网站出现500报错怎么排查
学完这篇,你能照着步骤把一个 500 报错从“打开就是白屏 500”定位到具体是哪一行 PHP 代码或哪一条服务器配置出的问题,并且知道怎么改回去。
500 错误本质上是“服务器内部错误”,浏览器不会告诉你细节,所以排查思路只有一条:把隐藏的错误信息挖出来。下面按顺序做,基本能覆盖九成情况。
第一步:先判断是 Web 服务器报的 500,还是 PHP 报的 500
这一步要拿到“谁在报错”的线索。打开浏览器按 F12 → Network → 刷新页面 → 点那条 500 的请求 → 看 Response Headers 里的 Server 字段。如果是 nginx 或 Apache,同时页面完全空白、连一点 HTML 都没有,大概率是 PHP 进程直接崩了(语法错误、扩展缺失),而不是网站程序逻辑问题。
同时看一眼响应时间:几十毫秒就返回 500,说明 PHP 根本没跑起来;卡了两三秒才 500,通常是程序内部报错或数据库超时。
第二步:打开 PHP 错误显示,直接看到报错内容
这一步做完,页面上会直接打印出错误文件和行号。Windows 版 phpStudy V8.1 的操作:打开 phpStudy 主界面 → 左侧「软件管理」→ 找到你当前用的 PHP 版本(比如 php7.4.3nts)→ 点「设置」→「打开配置文件」,会打开该版本的 php.ini。找到这两行改成:
display_errors = On
error_reporting = E_ALL
保存后回到 phpStudy 主界面,点「重启」重启 PHP 和 Web 服务器。再刷新网站页面,错误信息就出来了。
Linux 版小皮面板(面板版本 8.x):左侧「软件商店」→ 已安装 → 找到 PHP 版本 → 「设置」→「配置修改」,同样改上面两行,然后「服务」→ 重启 PHP。
注意:这一步只在调试时开,排查完立刻把
display_errors改回Off,否则线上会把数据库账号、文件绝对路径暴露给访问者。
第三步:去看日志,把错误时间点对上
如果不想动全局配置,直接查日志更快。Windows 版 phpStudy 的日志在安装目录下:
- PHP 错误日志:
phpstudy_pro\Extensions\php\php7.4.3nts\logs\php_errors.log(版本号按你实际的来) - Nginx 错误日志:
phpstudy_pro\Extensions\Nginx1.15.11\logs\error.log - Apache 错误日志:
phpstudy_pro\Extensions\Apache2.4.39\logs\error.log
Linux 小皮面板的日志更集中:面板左侧「网站」→ 找到对应站点 → 点右侧「日志」,可以看到 xxx.log(访问日志)和 xxx.error.log(错误日志);PHP 错误日志在 /www/server/php/74/var/log/php-fpm.log。
用记事本或 tail -f 打开,刷新页面,看最新追加的那几行。
注意:日志里的时间可能是 UTC,和你本机时间差 8 小时,别因为“时间对不上”就跳过。
第四步:按报错内容对号入座
拿到报错关键字后,常见情况是这几种:
Parse error: syntax error—— PHP 版本太低。比如代码用了 PHP 8 的语法,网站却跑在 PHP 7.2 上。到 phpStudy「网站」→「管理」→「PHP 版本」切换,或小皮面板「网站」→「设置」→「PHP 版本」。Call to undefined function—— 扩展没装。常见是fileinfo、curl、gd、openssl。Windows 版在 php.ini 里把extension=fileinfo前的分号去掉;小皮面板在 PHP 设置 →「安装扩展」里勾选。Access denied for user—— 数据库账号密码错,改网站配置文件里的连接信息。Failed to open stream: Permission denied—— 目录权限问题。Linux 下执行chown -R www:www /www/wwwroot/你的站点目录,chmod -R 755目录、644文件。- 伪静态没配 —— ThinkPHP、Laravel、WordPress 的 500 有一大半是这个。小皮面板「网站」→「设置」→「伪静态」,直接选对应框架;Windows 版 phpStudy 在「网站」→「管理」→「伪静态」里粘贴规则。
注意:Linux 服务器上文件名大小写敏感,Windows 上跑得好好的
Controller.php,传到 Linux 写成controller.php就会 500。这是迁移后最常见的坑。
第五步:收尾验证
改完后重启 PHP 和 Web 服务器,刷新页面确认正常,再把 display_errors 关掉,最后用 curl -I https://你的域名 确认返回 200。如果仍 500,回到第三步看日志有没有新的时间戳——有,说明改的方向不对;完全没有新日志,说明请求根本没到 PHP,要去查 Nginx 的 fastcgi_pass 配置和 9000 端口是否在监听。
小结
- 500 排查的核心是“把错误显出来”,先开
display_errors或直接看日志。 - 日志三个位置:PHP 错误日志、Web 服务器错误日志、站点 error.log。
- 高频原因排序:PHP 版本不匹配 > 伪静态未配 > 扩展缺失 > 目录权限 > 文件名大小写。
- 调试开关用完必须关掉,别留在线上。
- 没有新日志就往 Web 服务器和 PHP-FPM 通信上查,不要一直盯着代码。
原文链接:https://www.gj0.com/thread-428.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。