从PHP释放SQL Server连接错误:权限


Freetds SQL Server connection error from PHP: Permissions?

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

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

apache是运行httpd的用户。我已经确认了这一点:ps aux | grep apache

为什么apache可以很好地从命令行执行PHP脚本,但是当浏览器试图连接到相同的脚本时,它失败了?

谢谢,吊杆

根据FreeTDS常见问题:

php

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

你也可以张贴你的连接代码和你得到的错误到底是什么?

所以问题出在SELinux上。日志含义禁止web服务器连接外部网络(SQL server)。我必须运行这个命令:

/usr/sbin/setsebool -P httpd_can_network_connect_db 1

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