我有一个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脚本的任何想法,但是当浏览器尝试连接到同一个脚本时,它会失败?
谢谢, 井架
答案 0 :(得分:0)
答案 1 :(得分:0)
问题在于SELinux。禁止Web服务器连接到网络外部(到SQL Server)。我必须运行这个命令:
/ usr / sbin / setsebool -P httpd_can_network_connect_db 1
一旦完成,一切都很顺利。这个答案是在Daniel Fazekas的帮助下提供的。 谢谢大家和我一起看看这个问题。