连接到MS SQL数据库时PDO错误"Adaptive Server不可用"

Dan*_*ngs 5 php database sql-server pdo

我正在尝试连接到在Windows服务器上运行的SQL Server数据库.我在linux服务器上运行这个PHP代码(centos 7).

我使用以下pdo连接字符串连接到数据库.

$db = new PDO ("dblib:192.168.2.1;dbname=TestDB","username",'pass');
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我得到以下异常.带有消息'SQLSTATE [HY000]的'PDOException'无法连接:Adaptive Server不可用或不存在(严重级9)'

我试图使用tsql测试连接,我能够连接到数据库,没有任何错误.下面的代码给了我一个TestDB中所有表的列表.如果我首先使用TestDB类型,它将无法工作.

tsql -S 192.168.2.1 -U username -P 'pass' -L TestDB

use TestDB 
GO 
select * FROM sys.Tables 
GO
Run Code Online (Sandbox Code Playgroud)

我的freetds.conf文件包含以下内容

[Server1]
    host = 192.168.2.1
    port = 1433
    tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我是如何使用tsql连接的,但是在连接php时无法做到这一点.

绝对安装了dblib驱动程序.

print_r(PDO::getAvailableDrivers()); 

Array ( [0] => dblib [1] => mysql [2] => sqlite )
Run Code Online (Sandbox Code Playgroud)

回答

找到问题的原因.原来是SELinux.以下命令解决了该问题.

setsebool -P httpd_can_network_connect 1

setsebool -P httpd_can_network_connect_db 1
Run Code Online (Sandbox Code Playgroud)

med*_*eda 3

您有数据源名称,您应该使用它:

$db = new PDO ("dblib:host=Server1;dbname=TestDB","username",'pass');
Run Code Online (Sandbox Code Playgroud)

你运行的是linux吗?我建议尝试一下 odbc。