MariaDB和PHP的SSL错误

I got a problem. I am trying to create an SSL connection between my MariaDB database and my PHP code. At the moment of making the connection it works well to a certain extent, since in the PHP errors I start to get the following error: MySQL Server has gone away and the number of failed attempts and connection abortions increase drastically.

This is my code:

$this->connection = mysqli_init();

mysqli_options($this->connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$this->connection->ssl_set('/xxx/xxx/client-key.pem', '/xxx/xx/client-cert.pem', '/xx/xxx/ca-cert.pem', NULL, NULL);

if (!$this->connection->real_connect($this->host, $this->user_db, $this->password_db, $this->database, 3306, NULL, MYSQLI_CLIENT_SSL)) {
    $this->error_connect = $this->connection->connect_error;
    return false;
} else {
    $this->setCharset();
    return true;
}

What could be wrong with the server or my code?

douhan1860
douhan1860 “但PHP手册说......”-嗯,它在“mysqlifoo”vs“mysqli::foo”vs“obj->foo”上是松散的-我们应该知道他们的意思是“新”。
大约 2 年之前 回复
dongzhang8680
dongzhang8680 你真的致力于mysqli吗?PDO是一个更强大的接口,对TLS连接有更好的支持。
大约 2 年之前 回复
ds2321
ds2321 对于PHP文档中的SSL连接,必须以这种方式启动连接,因为对于新的MySQLi不允许使用mysqli_options,会显示以下错误:PHP致命错误:调用未定义的方法mysqli::mysqli_options()
大约 2 年之前 回复
douhui5529
douhui5529 您很少在生产代码中看到mysqli_init(),因为没有人使用real_connect。我甚至都不确定为什么那个东西在那里,但是mysqli已经老了并且有一段非常混乱的历史。只需使用新的mysqli(...),你应该能够设置必要的选项。
大约 2 年之前 回复
dongzhizhai4070
dongzhizhai4070 但是在PHP文档中它说要创建mysqli_real_connect(),你需要一个由mysqli_init()函数创建的有效对象。php.net/manual/en/mysqli.real-connect.php
大约 2 年之前 回复
dt3358
dt3358 您应该使用面向对象的mysqli接口或程序接口,而不是两者。由于您已经使用了对象,因此面向对象的对象更适合,因此将mysqli_init替换为等效的新mysqli(...)调用。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐