通过 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 服务器的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO 使用 SSL 连接到 MS SQLServer Express

如何通过 SSL 上的 PHP 连接到 Amazon MySQL RDS 实例

如何使用 PDO ssl 连接到 azure mysql 数据库

如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

通过 PDO ODBC 将 PHP 连接到 MSSQL

如何通过 PHP 连接到 Sybase