通过 SSL 上的 PHP PDO 连接到 MSSQL 服务器

Posted

技术标签:

【中文标题】通过 SSL 上的 PHP PDO 连接到 MSSQL 服务器【英文标题】:Connect to MSSQL server via PHP PDO over SSL 【发布时间】:2014-12-02 06:14:37 【问题描述】:

我通过 php PDO 与 MSSQL 服务器建立了有效连接。

$mssql = new PDO('dblib:host=1.2.3.4;dbname=databasename', 'username', 'password');

我现在需要这个连接是安全的,通过 SSL 发送所有交易。我没有看到 DBLIB 驱动程序的 any references to secure connections in the PHP manual。

有人可以提供一些关于我如何通过 SSL 启用此连接的见解吗? (如果需要,我可以在两台服务器之间导出和导入证书。)

编辑:我使用的是 PHP 5.5.9。

【问题讨论】:

对此有什么解决办法吗?添加了标签 (sql-server)。另见***.com/a/9768753/1816093 $mssql = new PDO('dblib:host=1.2.3.4;dbname=databasename;Encrypt=1', 'username', 'password');每php.net/manual/en/ref.pdo-sqlsrv.connection.php wups,如果您使用的是 PDO_SQLSRV ,而不是 PDO_DBLIB ...尝试更改驱动程序? PDO_SQLSRV 被记录为支持 ssl 和 MSSQL :/ 不确定这是否回答了您的查询,请访问***.com/questions/9738712/… 可能duplicate 【参考方案1】:

我知道在 6 年后发布它有点晚,但目前我使用 PDO 和 mssql 得到了这个解决方案。但是我正在使用 ODBC 和 MSSQL,这就是我为使 PDO 与 XAMPP 作为 localhost 一起工作所做的工作

显然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();
    

【讨论】:

【参考方案2】:

不确定您的服务器设置,但“官方”方法是使用 Microsoft 的 drivers。不幸的是,它们仅适用于 Windows PHP 服务器的 SSL。这是 connection options。

如果您使用的是 Linux,则有一个选项可以使用 SSL,但它不受 MS 官方支持。

【讨论】:

以上是关于通过 SSL 上的 PHP PDO 连接到 MSSQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章