ServerPilot环境下PHP7.0错误显示开启及升级白屏问题求助
解决ServerPilot环境下PHP7.0升级后网站空白页面问题
我太懂这种升级后突然空白页的焦虑了——毕竟PHP5.6到7.0的变动不小,加上ServerPilot的环境配置可能限制了错误显示,再加上MySQL到MySQLi的兼容坑,很容易踩雷。下面给你一步步排查的方案:
一、先强制开启错误显示,揪出空白页的根源
有时候ServerPilot的全局配置会屏蔽错误输出,哪怕你代码里设了也没用。直接在网站的入口文件(比如index.php)最顶部加上这段代码,强制让错误显示出来:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
添加后刷新页面,应该就能看到具体的错误提示了(比如某个mysql函数不存在、扩展未加载之类的),这是解决问题的关键第一步。
二、检查ServerPilot的PHP配置是否正确
如果上面的代码没生效,那得去ServerPilot面板里调整全局配置:
- 登录ServerPilot,找到你的目标应用,进入「PHP」选项卡
- 找到「Error Reporting」板块,把「Display Errors」设为「On」,「Error Reporting Level」选择「E_ALL」
- 保存设置后,点击面板里的「Restart PHP」按钮,确保配置生效
三、处理MySQL到MySQLi的兼容问题
PHP7.0彻底移除了所有mysql_*系列函数,这是升级后最常见的空白页原因:
- 全局搜索你的代码,把所有
mysql_connect()、mysql_query()、mysql_error()这类函数替换成对应的mysqli_*函数 - 举个简单的替换例子:
旧的MySQL连接代码:
替换为mysqli面向过程写法:$link = mysql_connect('localhost', 'db_user', 'db_pass'); mysql_select_db('your_db', $link);$link = mysqli_connect('localhost', 'db_user', 'db_pass', 'your_db'); // 检查连接错误 if (!$link) { die('Connect Error: ' . mysqli_connect_error()); } - 注意mysqli的错误处理和旧mysql不一样,比如要用
mysqli_error($link)而不是mysql_error(),调用方式有差异
四、确认mysqli扩展已安装
有时候ServerPilot的PHP7.0环境可能没默认开启mysqli扩展(虽然概率低,但还是要检查):
- 在网站根目录创建一个
phpinfo.php文件,内容是:<?php phpinfo(); ?> - 访问这个文件,搜索「mysqli」关键词,如果能看到对应的扩展信息,说明已安装;如果没有,回到ServerPilot的应用PHP设置里,找到扩展列表,确保mysqli已勾选,然后重启PHP
按照这个步骤来,先找到具体错误,再针对性解决,应该就能搞定空白页的问题了。
内容的提问来源于stack exchange,提问作者AlbaStar
相关产品推荐
相关产品推荐

