Maison  >  Questions et réponses  >  le corps du texte

Erreur du fournisseur SSL : chaîne de certificats émise au serveur MSSQL par une autorité non fiable en PHP

Tout d’abord, je suis vraiment un noob. (Se sentir désolé) Deuxièmement, j'ai essayé de connecter php au serveur mssql. Troisièmement, j'ai installé sqlsrv, pdo_sqlsrv et msodbcsql.msi Mais je reçois toujours un message d'erreur lorsque j'essaie de me connecter

Ma version de PHP est 8.0.10, x64 ; serveur mssql 2012.

Mon code php pour tester la connexion :

<?php
$serverName = "10.xxx.xx.148";
$connectionInfo = array( "Database"=>"zzzz", "UID"=>"ww","PWD"=>"123cccc");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
 echo "Connection established.<br />";
}else{
 echo "Connection could not be established.<br />";
 die( print_r( sqlsrv_errors(), true));}
?>

Ensuite, j'ai eu une erreur et j'ai été invité à installer msodbcsql.msi, je l'ai installé comme indiqué. Mais ensuite, de nouvelles erreurs s'affichent que je ne parviens pas à résoudre.

Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [Code] => -2146893019 2 => [Microsoft][Pilote ODBC 18 pour SQL Server] Fournisseur SSL : la chaîne de certificats a été émise par une autorité non fiable [Message] => [Microsoft][ODBC Driver 18 pour SQL Server] Fournisseur SSL : la chaîne de certificats a été émise par une autorité non fiable) 1 =>. ; Tableau ([0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [Code] => -2146893019 2 => [Microsoft][Pilote ODBC 18 pour SQL Server] Le client ne peut pas établir de connexion [Message] => [Microsoft][Pilote ODBC 18 pour SQL Server]Le client ne parvient pas à établir la connexion) )

Information supplémentaire : Il n'y a aucun problème lorsque je connecte dbeaver (PC différent) au serveur mssql (même serveur).

Merci d'avance

P粉338969567P粉338969567379 Il y a quelques jours722

répondre à tous(2)je répondrai

  • P粉545956597

    P粉5459565972023-10-31 10:06:43

    J'ai utilisé le pilote ODBC 17 au lieu du pilote ODBC 18 et le problème a été résolu. Dans mon cas, je n'ai pas besoin de cryptage, donc le pilote 17 me convient.

    répondre
    0
  • P粉327903045

    P粉3279030452023-10-31 09:22:33

    Juste au cas où quelqu'un se demanderait comment définir TrustServerCertificate comme 1, voici comment je l'ai fait, j'ai ajouté les paramètres en tant que nouveaux éléments du tableau comme ci-dessous

    <?php
    $serverName = "10.xxx.xx.148";
    $connectionInfo = array( 
     "Database"=>"zzzz",
     "UID"=>"ww",
     "PWD"=>"123cccc",
     "TrustServerCertificate"=>true
    );
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    ?>

    répondre
    0
  • Annulerrépondre