2011-09-07 76 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