使用pdo 连接sqlsrv 报错 ssl错误。
报错:
SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A0C0103:SSL routines::internal error]
或者:
SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A000102:SSL routines::unsupported protocol
ubuntu20.04 版本中可以通过 修改 /etc/ssl/openssl
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
ubuntu 22.04 配置文件有一些差异
经测试只需要修改配置文件的大概最后一行
[system_default_sect]
CipherString = DEFAULT:@SECLEVEL=2
CipherString = DEFAULT:@SECLEVEL=0
或者
CipherString = ALL:@SECLEVEL=0
然后重启php8.1-fpm 即可
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yhb598712254/article/details/129198029
<?php require_once __DIR__ . '/../api/v1/vendor/autoload.php'; require_once __DIR__ . '/../api/src/autoload.php'; $data['host'] = "192.168.0.167"; $data['port'] = 1433; $data['dbname'] = "ylh_diaodu"; $data['username'] = "zhzs"; $data['password'] = "zhzs@962001"; // $data['host'] = "dev.valueapex.com"; // $data['port'] = 11433; // $data['dbname'] = "master"; // $data['username'] = "SA"; // $data['password'] = "Matrixva11+"; try { $DB = new PDO( 'sqlsrv:Server=' . $data['host'] . ',' . $data['port'] . ';Database=' . $data['dbname'] . ';Encrypt=no;TrustServerCertificate=no;', $data['username'], $data['password'], [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => true ] ); $query = $DB->prepare(" select @@VERSION "); $query->execute(); $res = $query->fetch(); var_dump($res); } catch (PDOException $e) { echo "Cannot connect to DB for `" . $data['username'] . "`: \n\r"; echo $e->getCode() . ' ' . $e->getMessage(); die(); } // $serverName = $data['host']; //数据库服务器地址 // $uid =$data['username']; //数据库用户名 // $pwd = $data['password']; //数据库密码 // $connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"ylh_diaodu","Encrypt"=>false); // $conn = sqlsrv_connect($serverName, $connectionInfo); // if( $conn == false) // { // echo "连接失败!"; // var_dump(sqlsrv_errors()); // exit; // }else{ // echo "链接成功"; // } // //3 // $con = odbc_connect($serverName,$uid,$pwd); // $query = "SELECT * FROM ylh_diaodu.ems_ylh_t1"; // $result = odbc_do($con,$query); // while(odbc_fetch_row($result)) // { // $list = odbc_result($result, "id"); print_r($list);echo '<br/>'; // } // //4 // $conn =mssql_connect($serverName,$uid,$pwd) or die ("connect failed"); // mssql_select_db('ylh_diaodu',$conn); // // $database = new Medoo([ // // 'type' => 'mssql', // // 'driver'=>'sqlsrv', // // 'host' => '192.168.0.8', // // 'database' => 'demo', // // 'username' => 'sa', // // 'password' => 'demo', // // 'encrypt'=>0,// 这个是重点哦 // // 'port'=>1433 // // ]); // //5 // $conn = new Com("ADODB.Connection"); //实例化一个Connection对象 // $connstr = "provider=sqloledb;datasource=$serverName;uid=$uid;pwd=$pws;database=ylh_diaodu;"; // $conn->Open($connstr); // $rs = new Com("ADODB.Recordset"); //实例化一个Recordcount对象 // $rs->Open('select * from CKXS2 ', $conn, 1, 1); // $count = $rs->RecordCount; // echo "共有{$count}条纪录<br />"; // use PDO; // // use Medoo\Raw; // // $database=new Raw([ // // 'type' => 'mssql', // // 'database' => 'ylh_diaodu', // // 'host' => 'localhost', // // 'username' => 'sa', // // 'password' => 'Matrixva11+', // // ]); // // $result = $database->query("SELECT 1 AS test"); // // print_r($result); // // die; // // print_r($resultres);die; // $dsn = 'Driver={ODBC Driver 18 for SQL Server};Server=192.168.0.167;Database=ylh_diaodu;TrustServerCertificate=yes'; // $user = 'zhzs'; // $password = 'zhzs@962001'; // // 尝试连接到ODBC数据源 // $conn = odbc_connect($dsn, $user, $password); // if (!$conn) { // exit("Connection Failed: " . odbc_errormsg()); // } // echo "Connection successful!"; // // 在这里执行SQL查询等操作 // // 关闭连接 // odbc_close($conn); // die; // $serverName = "192.168.0.167\\sqlexpress"; // 或者 IP 地址, 端口等 // $connectionInfo = array("Database" => "ylh_diaodu", "UID" => "zhzs", "PWD" => "zhzs@962001"); // $conn = sqlsrv_connect($serverName, $connectionInfo); // if ($conn) { // echo "连接成功。"; // } else { // echo "连接失败。"; // die(print_r(sqlsrv_errors(), true)); // }