经过大量阅读和搜索后,我能够使用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
我错过了什么?
答案 0 :(得分:1)
在我的情况下,SELinux(我正在使用CentOS)在从linux框中的Apache Web服务器到windows框中的sql server完成时阻止了连接。要允许连接,您有两个选择:
禁用SELinux
以root或sudo运行两个命令:
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;上
你很好,如果关闭则在这个答案中运行第一个命令。