登录
首页 >  文章 >  php教程

宝塔PHP7.3升级后白屏解决办法

时间:2026-04-12 22:06:48 326浏览 收藏

PHP 7.3 升级后网站白屏,往往并非代码无错,而是致命错误被静默屏蔽——真正原因常藏在配置错位、日志失能或框架覆盖之中:你可能正修改着CLI用的php.ini,而Web服务却加载着另一个;display_errors开启却因error_reporting设为0形同虚设;.user.ini悄悄关掉报错;错误日志因权限不足空转不写;甚至CMS入口文件一句error_reporting(0)就让所有配置前功尽弃。本文直击宝塔环境下白屏排查的五大关键陷阱,从精准定位生效配置、强制启用错误显示,到实时监听日志、识别典型7.3兼容报错,再到绕过框架拦截的临时调试技巧,帮你快速撕开白屏假象,让隐藏的错误无所遁形。

如何修复宝塔面板PHP7.3升级后白屏问题_查看错误日志并开启display_errors

PHP 7.3 升级后白屏,大概率是致命错误被静默吞掉,没开 display_errors,也没把错误写进日志 —— 先确认日志路径和 PHP 配置是否真生效,别在错误的 php.ini 里改。

查清楚当前生效的 php.ini 路径

宝塔多个 PHP 版本共存,容易改错配置文件。白屏时 Web 服务用的未必是你以为的那个 php.ini

  • 在宝塔面板 → 网站 → 对应站点 → 「PHP 版本」旁点「设置」→ 「配置文件」,看顶部显示的路径,这是 Nginx/Apache 实际加载的 php.ini
  • 终端执行 php -i | grep "Loaded Configuration File"(注意:这是 CLI 模式下的路径,和 Web 不一定一致;Web 下建议用 phpinfo() 页面确认)
  • 新建一个 info.php 放到网站根目录,内容为 ,访问它,搜索「Loaded Configuration File」,以这个为准

开启 display_errors 并确认 error_reporting 级别

仅开 display_errors = On 不够,如果 error_reporting 被设成 0 或过低,连 E_ERROR 都不显示。

  • 编辑上一步确认的 php.ini,找到并修改这两行:
    display_errors = On
    error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT(PHP 7.3 推荐值,兼容性好)
  • 改完必须重启 PHP 服务:宝塔面板 → 软件管理 → PHP 7.3 → 「重启」按钮,不是重载
  • 若仍白屏,检查是否被 .htaccess 或 user.ini 覆盖:查看网站根目录下有无 .user.ini,里面若有 display_errors=Offerror_reporting=0,删掉或改成 On/E_ALL

查看 PHP 错误日志定位具体报错

白屏时 display_errors 可能因输出缓冲、header 已发送等原因失效,日志才是唯一可靠来源。

  • 宝塔默认 PHP 错误日志路径是:/www/wwwlogs/php_error.log(全局);也可在 php.ini 中查 error_log 配置项确认
  • 实时监听日志:终端执行 tail -f /www/wwwlogs/php_error.log,然后刷新白屏页面,看有没有新错误输出
  • 常见升级后报错:
    Call to undefined function mysql_connect() → PHP 7.3 移除了 mysql_* 函数,需换 mysqliPDO
    Cannot declare class XXX, because the name is already used → 类重复加载,检查 require_once 是否漏写,或自动加载器冲突
    Array and string offset access syntax with curly braces is deprecated → 旧代码用 $str{0},要改成 $str[0]

临时加一句 error\_reporting 强制输出(调试用)

如果改了 php.ini 还看不到错误,可能是某些框架或 CMS 在入口文件开头就调用了 error_reporting(0),直接覆盖了配置。

  • 在网站入口文件(如 index.php)最顶部插入:
    error_reporting(E_ALL); ini_set('display_errors', '1');
  • 注意顺序:必须在任何输出(包括空格、BOM)之前,否则会报「headers already sent」而失败
  • 这招只用于快速定位,上线前务必删掉,避免暴露敏感信息

真正麻烦的不是找不到错误,而是日志里没记录 —— 很可能因为 error_log 路径不可写,或 SELinux/权限限制导致 PHP 根本写不进日志。遇到这种情况,先 ls -l /www/wwwlogs/ 看属组是不是 www,再 chown -R www:www /www/wwwlogs/,然后再试。

以上就是《宝塔PHP7.3升级后白屏解决办法》的详细内容,更多关于的资料请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>