空白页通常因PHP致命错误被静默屏蔽所致;需检查phpinfo()中error_reporting和display_errors是否为Off,并在index.php顶部添加ini_set('display_errors', '1')和error_reporting(E_ALL)。
phpMyAdmin 报错但页面只显示空白,怎么看到真实错误?
默认情况下,phpmyadmin 会屏蔽 php 错误输出(display_errors = off),尤其在生产环境。你看到空白页,大概率是 php 报了致命错误但被静默吞掉了。
- 先确认 PHP 是否真在报错:访问任意一个纯
phpinfo()页面,搜索error_reporting和display_errors,看值是否为Off - 临时开启:在 phpMyAdmin 入口文件
index.php顶部(<?php后第一行)加error_reporting(E_ALL); ini_set('display_errors', '1'); - 更稳妥的做法是改 PHP 配置:编辑
php.ini,设display_errors = On、error_reporting = E_ALL,然后重启 Web 服务(如sudo systemctl restart apache2或sudo service php-fpm restart) - 注意:别在线上环境长期开着
display_errors,容易泄露路径或配置信息
phpMyAdmin 自身的调试日志怎么开?
phpMyAdmin 有独立的日志开关,不依赖 PHP 错误日志,主要用于记录 SQL 执行、登录行为、配置加载等内部流程。
- 编辑
config.inc.php(通常在 phpMyAdmin 根目录),添加或修改以下几行: -
$cfg['Debug'] = true;—— 开启基础调试模式(影响 UI,比如显示执行时间、SQL 查询) -
$cfg['SaveDir'] = '/var/log/phpmyadmin/';—— 指定日志保存路径(必须存在且 Web 进程可写,如www-data或nginx用户有权限) -
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp/';—— 临时目录也要配对,否则某些日志功能(如导入导出跟踪)会失败 - 日志文件名通常是
phpmyadmin.log,内容为纯文本,每行一条带时间戳的事件,比如[2024-05-12 14:22:03] SQL: SELECT * FROM users;
PHP 错误日志在哪?为什么改了 php.ini 还看不到?
PHP 日志位置不由 phpMyAdmin 控制,取决于 PHP 的 error_log 配置项,常被忽略的是「它可能没写进你想找的那个文件」。
- 运行
php -i | grep error_log或查phpinfo()页面里的error_log行,确认实际路径(常见如/var/log/php_errors.log或/var/log/apache2/error.log) - 如果值是
stderr,说明错误直接打到 Web 服务器 stderr(比如 Apache 的ErrorLog配置路径),此时要看 Apache/Nginx 的错误日志,不是 PHP 自己的日志文件 - 权限问题最常见:确保日志路径父目录可写,且文件不存在时 PHP 能自动创建(否则静默失败)。用
sudo -u www-data touch /var/log/php_errors.log && sudo -u www-data chmod 644 /var/log/php_errors.log测试 - FPM 场景下还要检查
www.conf里的catch_workers_output = yes和php_admin_value[error_log],否则子进程错误不会上浮
调试时发现 mysqli_connect() 失败,但错误不显示?
这是典型被 phpMyAdmin 层级错误处理掩盖的情况——它捕获了底层连接异常,转成友好的提示(如“无法连接到 MySQL 服务器”),但隐藏了原始报错原因。
- 手动测试连接:在服务器上跑一段最小代码,绕过 phpMyAdmin:
<?php
$mysqli = new mysqli(``'localhost'``, 'root'``, 'pass'``, ''``, 3306);
if (``$mysqli``->connect_error) {
error_log``(``'MySQL connect error: ' . $mysqli``->connect_error . ' (' . $mysqli``->connect_errno . ')'``);
echo $mysqli``->connect_error;
}
?>
omegafw.gmcwatch.cn
rolexfw.gmcwatch.cn
patekfw.gmcwatch.cn
omegafw.swatchsh.com
rolexfw.swatchsh.com
patekfw.swatchsh.com
omegafw.paydyj.com
rolexfw.paydyj.com
patekfw.paydyj.com
omegafw.watchku.com
rolexfw.watchku.com
patekfw.watchku.com
omegafw.gmcwatch.cn
rolexfw.gmcwatch.cn
patekfw.sitezj.cn
- 常见根因:
mysqli扩展未启用(检查php -m | grep mysqli)、MySQL 服务没起来、bind-address限制了本地连接、SELinux/防火墙拦截 Unix socket(路径不对或权限不足) - phpMyAdmin 的
$cfg['Servers'][$i]['host']如果填了127.0.0.1,走 TCP;填localhost则优先走 socket,两者错误表现不同,务必核对 MySQL 实际监听方式
实际调试时,最常卡在权限和路径错位:PHP 写不了日志目录、phpMyAdmin 的 SaveDir 权限不对、error_log 配置被 FPM 或 Apache 覆盖。盯住用户权限和真实生效的配置项,比反复刷新页面有用得多。