PHP MySQLi 函数

PHP mysqli::ssl_set() / mysqli_ssl_set() 函数用于使用 SSL 建立安全连接。它必须在 mysqli_real_connect() 之前调用。除非启用 OpenSSL 支持,否则此函数不会执行任何操作。

语法

//面向对象风格
public mysqli::ssl_set(key, certificate, ca_certificate, 
                       ca_path, cipher_algos)

//面向过程风格
mysqli_ssl_set(mysql, key, certificate, 
               ca_certificate, ca_path, cipher_algos)

参数

mysql 必填。 仅适用于面向过程风格:指定 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。
key 必填。 指定密钥文件的路径名。
证书 必填。 指定证书文件的路径名。
ca_certificate 必填。 指定证书颁发机构文件的路径名。
ca_path 必填。 指定包含 PEM 格式的受信任 SSL CA 证书的目录的路径名。
cipher_algos 必填。 指定用于 SSL 加密的允许密码列表。

返回值

始终返回 true 值。如果 SSL 设置不正确,mysqli_real_connect() 将在尝试连接时返回错误。

示例:面向对象风格

下面的示例显示 mysqli:: 的用法ssl_set() 方法。

<?php
$mysqli = mysqli_init();
if (!$mysqli) {
  die('mysqli_init failed');
}

$mysqli -> ssl_set("key.pem", "cert.pem", "cacert.pem", NULL, NULL);

//建立与数据库的连接
if (!$mysqli->real_connect("localhost", "user", "password", "database")) {
  die('Connect Error: '. mysqli_connect_error());
}

echo 'Success... ' . $mysqli->host_info . "\n";

//关闭连接
$mysqli->close();
?>

上述代码的输出将类似于:

Success... MySQL host info: localhost via TCP/IP

示例:面向过程风格

下面的示例显示了mysqli_ssl_set()函数的用法。

<?php
$mysqli = mysqli_init();
if (!$mysqli) {
  die('mysqli_init failed');
}

mysqli_ssl_set($mysqli, "key.pem", "cert.pem", "cacert.pem", NULL, NULL);

//建立与数据库的连接
if (!mysqli_real_connect($mysqli, "localhost", "user", "password", "database")) {
  die('Connect Error: '. mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($mysqli) . "\n";

//关闭连接
mysqli_close($mysqli);
?>

上述代码的输出将类似于:

Success... MySQL host info: localhost via TCP/IP