phpMyAdmin "Cannot log in to the MySQL server" 与 PHP 7.0.0 RC7

phpMyAdmin "Cannot log in to the MySQL server" with PHP 7.0.0 RC7

设置:

我最近在开发 linux 盒子上升级到 PHP 7.0 RC7。

从那时起,phpMyAdmin 只抛出 "Cannot log in to the MySQL server" 以及 "Connection for controluser as defined in your configuration failed.",而没有进一步的消息、错误编号或详细信息。

我还不能从这个连接失败的原因中找到更多信息(来自 phpMyAdmin 的高度抽象的 类 使它变得困难)。

非常感谢任何有关如何从 phpMyAdmin 中获取更多信息的提示。

相关配置如下:

$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['ssl'] = true;

这是我的测试脚本,运行良好:

<?php
$_dbHost = 'localhost';
$_dbUser = 'root';
$_dbPass = 'mysupersecretrootpassword';
$_dbName = '';
$_dbPort = 0;
$_dbSock = '/var/run/mysqld/mysqld.sock';

$mysqli = new mysqli($_dbHost, $_dbUser, $_dbPass, $_dbName, $_dbPort, $_dbSock);

if ($mysqli->connect_errno) {
    echo "Error: Failed to make a MySQL connection, here is why: \n";
    echo "Errno: " . $mysqli->connect_errno . "\n";
    echo "Error: " . $mysqli->connect_error . "\n";
    exit;
} else {
    echo "Connection Successfull";

    $dbList = $mysqli->query('show databases;');
    echo "<pre>";
    var_dump($dbList->fetch_assoc());
    echo "</pre>";
}
?>

这可能只是我,也许我遗漏了一些东西,但在你的上部脚本中,你似乎没有像测试脚本中那样传递用户,密码也是如此。

$cfg['Servers'][$i]['user']='root';
$cfg['Servers'][$i]['password']='mysupersecretpassword';

也许添加它会起作用。

设置:

  • Debian 8.2(杰西)
  • PHP 版本:7.0.0-4 |来自席德
  • lighttpd/1.4.35 (ssl)
  • 10.0.19-MariaDB-日志 | mysqlnd 5.0.12-dev - 20150407

已使用套接字连接在 phpMyAdmin 版本 4.4.7、4.5.2 和 4.6.0-dev 上进行测试。

遇到了与您相同的问题,并追溯到与 MySQL-服务器的安全连接。

临时修复:

在您的 config.inc.php (phpMyAdmin) 评论中

$cfg['Servers'][$i]['ssl'] = true;

决定是否将 ssl 用于 phpMyAdmin 和 MySQL-Server 之间的连接。

侧面:

Marc Delisle 编写的补丁很可能会在该状态下引发错误,正确的是:

    error_log(var_export($this->_extension->getError(null), true));

您的网络服务器将记录如下内容:

    (mod_fastcgi.c.2695) FastCGI-stderr: PHP message: '#2006 - MySQL server has gone away'

在这种情况下更像是误报

更新 1:

MYSQLI_CLIENT_SSL 常量似乎有问题,它将 $client_flags 设置为 /libraries/dbi/DBIMysqli.class.php 在第 176 行。一旦设置这些,连接就会断开。