PDO DBLIB访问SQL Server 2008和2012

时间:2013-07-05 21:11:06

标签: sql-server-2008 pdo

经过大量阅读和搜索后,我能够使用Centos 6.4 32位的PDO DBLIB工作(有64位的文档,而不是32位的文档)。令我惊讶的是,以下代码来自 shell命令($ PHP test.php)

<?php
try {
    $conn = new PDO('dblib:host='.$host.':1433;dbname='.$db, $user, $pass);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

但是当从Web浏览器访问文件test.php时,我收到以下错误:

  

错误:SQLSTATE [HY000]无法连接:Adaptive Server是   不存在或不存在(严重性9)

我还可以使用以下命令从shell连接到SQL Server:

tsql -H 192.168.1.120 -p 1433 -U sa

我错过了什么?

1 个答案:

答案 0 :(得分:1)

在我的情况下,SELinux(我正在使用CentOS)在从linux框中的Apache Web服务器到windows框中的sql server完成时阻止了连接。要允许连接,您有两个选择:

  1. 禁用SELinux

  2. 以root或sudo运行两个命令:

  3.   

    setsebool -P httpd_can_network_connect 1

         

    setsebool -P httpd_can_network_connect_db 1

    要检查SELinux是否阻止您的网络和数据库连接运行此命令:

      

    getsebool -a | grep httpd_can_network_connect

    如果结果是:

      

    httpd_can_network_connect - &gt;上

         

    httpd_can_network_connect_db - &gt;上

    你很好,如果关闭则在这个答案中运行第一个命令。