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)
您有数据源名称,您应该使用它:
$db = new PDO ("dblib:host=Server1;dbname=TestDB","username",'pass');
Run Code Online (Sandbox Code Playgroud)
你运行的是linux吗?我建议尝试一下 odbc。
| 归档时间: |
|
| 查看次数: |
11807 次 |
| 最近记录: |