来自PHP的Freetds SQL Server连接错误:权限?

时间:2011-09-07 00:15:38

标签: php sql-server-2008 apache2 freetds

我有一个PHP脚本,可以连接到远程SQL Server。 从root命令行我可以调用freetds命令: tsql -H hostname -U username 它连接得很好,我可以运行查询。

我在/var/www/html/axis/public/test.php中有一个PHP脚本 当我:sudo -u apache -s(将用户从root更改为apache)然后从命令行运行我的PHP脚本时,它会连接并运行查询。 但是当从Web浏览器执行相同的脚本时,它会失败 - 浏览器会返回数据库连接错误。 Web浏览器能够连接到应有的所有位置,并呈现所有不需要SQL连接的Web页面。

apache是​​运行httpd的用户。我通过以下方式证实了这一点:ps aux | grep apache

关于为什么apache可以从命令行执行PHP脚本的任何想法,但是当浏览器尝试连接到同一个脚本时,它会失败?

谢谢, 井架

2 个答案:

答案 0 :(得分:0)

根据FreeTDS常见问题解答:

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

您也可以发布您的连接代码以及您正在获得的错误吗?

答案 1 :(得分:0)

问题在于SELinux。禁止Web服务器连接到网络外部(到SQL Server)。我必须运行这个命令:

/ usr / sbin / setsebool -P httpd_can_network_connect_db 1

一旦完成,一切都很顺利。这个答案是在Daniel Fazekas的帮助下提供的。 谢谢大家和我一起看看这个问题。

相关问题