0

我有一个连接到远程 SQL Server 的 PHP 脚本。从命令行以 root 身份我可以调用 freetds 命令:tsql –H 主机名 –U 用户名,它连接得很好,我可以运行查询。

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

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

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

谢谢, 井架

4

2 回答 2

0

根据 FreeTDS 常见问题解答:

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

您还可以发布您的连接代码以及您得到的确切错误是什么?

于 2011-09-07T00:46:47.310 回答
0

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

/usr/sbin/setsebool -P httpd_can_network_connect_db 1

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

于 2011-09-07T14:30:51.547 回答