PHP MySqli、SSL 和 mysqli_real_escape_string 不起作用

问题描述 投票:0回答:1

当我使用 PHP、MySQLI 并激活 SSL 连接到外部 MySQL-DB (MariaDB 10) 时...:

    /* create a connection object which is not connected */
    $conn = new mysqli(); 
    $conn->init( );
    /* set connection options */ 
    $conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
    /*connect to server*/
    $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);

...我无法使用:

     mysqli_real_escape_string($conn, $_GET['clientid'])

...或者...

     $conn->mysqli_real_escape_string($_GET['clientid'])

结果将为空。当我禁用 SSL 时...:

     $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306);

...它会起作用的。

在我的带有 XAMPP 的 iMac 上,它也可以使用 SSL 连接。仅当我使用 PHP7.1 将 PHP 脚本上传到我的网站空间 (Strato www.strato.de) 时,它才无法与 SSL 连接一起使用。

那么,为什么我不能在我的网站空间上使用带有 ssl 连接的“escape_string”?

编辑:

这就是我检查连接错误的方式:

function sql_connect($Datenbank){
    $Servernr = get_ServerNr();
    $Server = get_Server($Servernr);
    $SQL_Servernr = $Server->Nr;
    $SQL_Server = $Server->Url;
    $SQL_Benutzer = $Server->Benutzer;
    $SQL_Passwort = $Server->Passwort;
    $SQL_Datenbank = $Datenbank;
    $timeout = 5;

    $conn = new mysqli(); 
    $conn->init( );
    $conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
    $conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
    if ($conn->connect_errno) {
        echo $conn->connect_errno;
        die();
    }
    return $conn;
} 

编辑2:

现在我激活了E_ALL-错误报告:

注意:使用未定义的常量 MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT - 在第 101 行 /mnt/web022/d2/18/51779718/htdocs/webservice_config/dbserver2.php 中假设为“MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT”

警告:mysqli::real_connect() 期望参数 7 为整数,在第 101 行 /mnt/web022/d2/18/51779718/htdocs/webservice_config/dbserver2.php 中给出的字符串

警告:mysqli_real_escape_string():第 34 行 /mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php 中的无效对象或资源 mysqli

警告:mysqli_query():第 38 行 /mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php 中的无效对象或资源 mysqli

致命错误:未捕获错误:在 /mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php:40 中对 null 调用成员函数 fetch_assoc() 堆栈跟踪:#0 {main} 抛出在 /mnt 中/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php 第 40 行

使用 XAMPP 我不会收到此通知。我该如何解决这个问题?

php ssl mysqli
1个回答
-1
投票

Nico Scheiße.dsadasdasdasdsadasdsa

© www.soinside.com 2019 - 2024. All rights reserved.