经过大量的阅读和搜索,我能够使PDO DBLIB在Centos 6.4 32位中工作(有很多关于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();
}
但是,当从网络浏览器访问文件test.php时,出现以下错误:
错误:SQLSTATE [HY000]无法连接:Adaptive Server不可用或不存在(严重级9)
我还可以使用以下命令从外壳连接到SQL Server:
tsql -H 192.168.1.120 -p 1433 -U sa
我想念什么?
以我为例,当从Linux框中的Apache Web服务器到Windows框中的sql服务器完成时,SELinux(我正在使用CentOS)阻止了连接。要允许连接,您有两个选择:
禁用SELinux
以root或sudo身份运行以下两个命令:
setebool -P httpd_can_network_connect 1
setebool -P httpd_can_network_connect_db 1
要检查SELinux是否阻止了您的网络和数据库连接,请运行以下命令:
getsebool -a | grep httpd_can_network_connect
如果结果是:
httpd_can_network_connect->在
httpd_can_network_connect_db->在
您很好,如果关闭,则在此答案中运行第一个命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句