通过PHP PDO使用SSL连接到MSSQL服务器

8
我通过PHP PDO与MSSQL服务器建立了可用的连接。
$mssql = new PDO('dblib:host=1.2.3.4;dbname=databasename', 'username', 'password');

我现在需要这个连接是安全的,将所有事务通过SSL发送。我没有看到DBLIB驱动程序在PHP手册中有任何有关安全连接的参考资料
是否有人能够提供一些见解,告诉我如何启用此SSL连接?(如果需要,我有在两个服务器之间导出和导入证书的能力。) 编辑:我使用的是PHP 5.5.9版本。

有解决方案吗?添加了一个标签(sql-server)。另请参见https://dev59.com/omkw5IYBdhLWcg3wp8Sc#9768753。 - Drew
$mssql = new PDO('dblib:host=1.2.3.4;dbname=databasename;Encrypt=1', 'username', 'password'); 根据 http://php.net/manual/en/ref.pdo-sqlsrv.connection.php - hanshenrik
糟糕,如果你正在使用的是PDO_SQLSRV而不是PDO_DBLIB...尝试更改驱动程序?PDO_SQLSRV被记录支持ssl和MSSQL :/ - hanshenrik
不确定这是否回答了你的问题。请访问https://dev59.com/omkw5IYBdhLWcg3wp8Sc。 - user1175370
可能 [重复] (https://dev59.com/PH3aa4cB1Zd3GeqPc2p-#33322487) - Kyle Wiering
请查看此处:https://dev59.com/NnVC5IYBdhLWcg3wZwJT - Markus Zeller
2个回答

0

我知道现在已经有点晚了,因为已经过去6年了,但我目前使用PDO和MSSQL解决了这个问题。然而我正在使用ODBC和MSSQL,这是我用来使PDO与XAMPP作为本地主机配合工作的方法。

显然,odbc&mssql不需要像这样复杂的东西。

$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

但只是简单的

$conn = new PDO ("odbc:$dbname", $username, $password);

这是我系统的可运行代码

 $dbname = "Form_Database";
    $username = "";
    $password = "";

    try{
        $conn = new PDO ("odbc:$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare("<--SQL QUERY-->");
        $stmt -> execute();
        $result = $stmt -> setFetchMode(PDO::FETCH_ASSOC);
        
    } catch(PDOException $e) {
      echo "Error: " . $e->getMessage();
    }

0

不确定您的服务器设置,但“官方”方法是使用Microsoft的驱动程序。不幸的是,它们仅适用于Windows PHP服务器的SSL。这里是连接选项

如果您在Linux上,则有一种可以进行SSL的选项,但它不是MS官方支持的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接