PHP 网站白屏或 500:先看错误日志
发布时间:2026-07-25 15:06       
更新时间:2026-07-25 17:01
白屏或 500 的时候,反复刷新不会有答案,答案在错误日志里。PHP 出错默认不一定显示在页面上,先让错误自己开口。顺便区分一下症状:纯白屏多半是致命错误,页面输出一半再断,往往是超时或内存耗尽。
怎么让错误显形
最直接的办法是临时开显示:php.ini 里把 display_errors 设为 On,error_reporting 设为 E_ALL,重载 php-fpm 后刷新页面,错误信息会直接打印出来。不方便改主配置的场景(共用环境的机器),在站点入口文件顶部临时加一行 ini_set('display_errors', 1) 也等效。查完记得全部改回来——生产环境在页面上输出错误细节,本身就是一个信息泄露点。不想动配置,就直接看日志,共用环境的机器上直奔日志反而省事。
日志去哪找
php-fpm 池配置里一般指定了 error_log,常见路径是 /var/log/php-fpm/www-error.log(CentOS)或 /var/log/php8.2-fpm/www-error.log(Ubuntu),前提是 log_errors 开着。找不到就搜配置:
grep -r "error_log" /etc/php-fpm.d/ /etc/php/ 2>/dev/null
Nginx 的 error_log 也别漏,那里常有 upstream 报 502 的线索。最省事的排查姿势:用 tail -f 盯着日志文件,同时刷新页面,报错瞬间就会滚出来。日志行出来之后,对照下面三类原因里的关键字,多数问题十分钟内能定位。
三个高频原因
一是函数被禁用:php.ini 的 disable_functions 禁掉了程序用到的函数(proc_open、putenv 之类),日志里会出现 has been disabled 字样,从列表里放行即可。二是权限:session 目录或上传目录运行用户写不进去,报 Permission denied,用 chown 把目录属主改成 php-fpm 运行用户就能解决。三是内存:memory_limit 太小,报 Allowed memory size exhausted,临时调大先恢复服务,再回头定位是哪段代码在吃内存。三类原因覆盖了日常大半的白屏场景,都对不上号时,再回头怀疑数据库连不上、磁盘写满这类环境问题,逐层排查。
改了没生效的坑
命令行的 php 和 php-fpm 读的可能是两份 php.ini,php --ini 看命令行用的哪份,phpinfo() 看 fpm 实际加载的哪份,改错文件等于白改,这是最常见的无效排查,两边各花一分钟对一遍,能省掉大半的来回折腾。