2011-09-07 75 views
0

我有一个连接到远程SQL Server的PHP脚本。 在命令行中以root身份,我可以调用freetds的命令: TSQL -H主机名-u用户名 并把它连接好了,我可以运行查询。来自PHP的Freetds SQL Server连接错误:权限?

我在/var/www/html/axis/public/test.php有一个PHP脚本 当我:sudo -u apache -s(将用户从根改为apache),然后运行我的PHP脚本命令行,它连接并运行查询很棒。 但是,当从Web浏览器执行相同的脚本时,它失败 - 浏览器返回一个DB连接错误。 Web浏览器能够连接到任何地方,并呈现所有不需要SQL连接的网页。

apache是​​运行httpd的用户。我已经通过:ps aux |确认了这一点grep的阿帕奇

任何想法,为什么Apache可以执行的命令行PHP脚本很好,但是当浏览器尝试连接到同样的脚本,它失败了呢?

感谢, 德里克

回答

0

所以问题出在SELinux上。 Web服务器被禁止连接到网络之外(连接到SQL Server)。我不得不运行此命令:

/usr/sbin目录/ setsebool -P httpd_can_network_connect_db 1

这项工作完成,一切都很好。丹尼尔Fazekas帮助提供了这个答案。 谢谢大家与我一起看看这个问题。

0

由于每freetds的FAQ:

http://www.freetds.org/faq.html#php

也可您发布的连接代码,你会得到什么错误的是什么呢?

+0

是的,我读了一个。如上所述,我将用户更改为apache,并从commmand行执行PHP脚本就好了。这不是像在浏览器中直接执行相同的脚本一样吗? 连接字符串可能不那么重要,因为PHP脚本是作为apache启动的,但不是来自浏览器。他们都执行相同的脚本。 错误如下:SQLSTATE [HY000]无法连接:Adaptive Server不可用或不存在(严重性9) – Derrick