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