我编写了支持 ssl mysqli 的代码,您不再需要更改 mysqli connect 交换为自己的 mysqli。重写支持 ssl 的 mysqli 的 __construct 可以像这样
<?php class myssl_mysqli extends \mysqli {
public function __construct($db_host, $db_user, $db_pass, $db_name, $port, $persistent = true, $ssl = false, $certpublic = "") {
if($ssl) {
parent::init();
parent::options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);
parent::ssl_set(NULL, NULL, $certpublic, NULL, NULL);
parent::real_connect(($persistent ? 'p:' : '') . $db_host, $db_user, $db_pass, $db_name, $port, '', MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
} else {
parent::__construct($db_host, $db_user, $db_pass, $db_name, $port);
}
}
$db = new myssl_mysqli('localhost','user', 'pass','db', '3306', true, true, '/home/mypublicowncert.pem');
?>
在这个例子中,我关闭了由 ssl 权威机构颁发的证书的验证,因为它是由自己创建的证书。