您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

通过PHP从SSL连接到远程MySQL服务器

通过PHP从SSL连接到远程MySQL服务器

“不幸的是,我不能使用MysqLi lib,因为pdo_MysqL有太多可用的适配器。”

您正在使用旧的MysqL扩展(“ MysqL_connect”),该扩展已不再开发(仅维护)。由于您使用的是PHP 5,因此您可能要使用MySQLiMysqL 改进的 扩展)。除其他外,它具有面向对象的界面,支持准备/多个语句,并具有增强的调试功能。您可以在此处阅读有关转换为MysqLi的更多信息;更多关于MysqLi类本身的信息

以下是一些示例代码,可以帮助您入门:

<?PHP
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);

$db = MysqLi_init();
MysqLi_options ($db, MysqLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set('/etc/MysqL/ssl/client-key.pem', '/etc/MysqL/ssl/client-cert.pem', '/etc/MysqL/ssl/ca-cert.pem', NULL, NULL);
$link = MysqLi_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MysqLI_CLIENT_SSL);
if (!$link)
{
    die ('Connect error (' . MysqLi_connect_errno() . '): ' . MysqLi_connect_error() . "\n");
} else {
    $res = $db->query('SHOW TABLES;');
    print_r ($res);
    $db->close();
}
?>

如果确实需要PDO_MYSQL,则需要执行以下操作:

<?PHP
$pdo = new PDO('MysqL:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MysqL_ATTR_SSL_KEY    =>'/etc/MysqL/ssl/client-key.pem',
    PDO::MysqL_ATTR_SSL_CERT=>'/etc/MysqL/ssl/client-cert.pem',
    PDO::MysqL_ATTR_SSL_CA    =>'/etc/MysqL/ssl/ca-cert.pem'
    )
);
$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
?>

但是,只有最新版本的PHP具有对PDO的SSL支持,并且(至少)在版本5.3.8中认忽略了SSL选项:请参阅错误报告

祝好运!

php 2022/1/1 18:13:43 有704人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶