使用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));
// }

 

posted @ 2024-09-13 21:02  王越666  阅读(83)  评论(0编辑  收藏  举报