簡體   English   中英

php cli mssql_connect-無法連接:SQL服務器不可用

[英]php cli mssql_connect - Unable to connect: SQL server is unavailable

我試圖用cakephp運行一個shell,但是由於SQL連接錯誤,我無法做到這一點,我總是得到這個

警告:mssql_connect():無法連接到服務器:XXXXX我確定數據源的配置正確,因為我可以使用應用程序的網站端進行連接。

有沒有人遇到這樣的事情?

順便說一句,Web服務器和mssql服務器不同,它們位於不同的主機上。

環境信息(我同意這是一團糟...):

  • 網絡服務器
    • Windows Server 2003 R2
    • PHP-5.2.4
    • IBM http服務器6.1
    • Cakephp 1.2
  • 數據庫服務器
    • Windows Server 2003 R2
    • Microsoft SQL Server 2005

我已經隔離了問題,發現與cakephp沒有關系,我只用這行代碼創建了一個腳本

mssql_connect('XXXX', 'YYYY', 'ZZZZ', true);

給我同樣的錯誤。 CLI和如何從HTTP服務器運行php之間應該有所不同。

謝謝!

確保指定要連接的端口(通常為1433)。 如果仍然無法解決問題,則需要使用命名管道設置。 在PHP網站上的注釋中可以找到更多信息: http : //ca3.php.net/function.mssql-connect

我還建議您考慮使用適用於PHP的Microsoft SQL Serv驅動程序,它們的維護性能比mssql更好。 http://www.microsoft.com/download/zh-CN/details.aspx?id=20098這是一篇說明差異的文章: http : //blogs.msdn.com/b/brian_swan/archive/2010/03/08 /mssql-vs-sqlsrv-what-s-the-difference-part-1.aspx如果您使用sqlsrv路由(我確實建議您這樣做),則這里是連接參數: http : //php.net/manual /en/function.sqlsrv-connect.php使用示例3。

這是我按照步驟縮小范圍然后解決問題的步驟:

  • 通過運行下一個命令,檢查哪個php.ini是您使用的cli: php -i
  • 隔離問題,我本來以為是Cakephp的問題,但最后每個問題都與php中的一行有關,我的問題是圍繞這段代碼mssql_connect('XXXX', 'YYYY', 'ZZZZ', true);
  • 根據此處提供的信息,我發現下一個dll已過時或與Windows Server 2003不兼容,只需獲取ntwdblib.dll ver。 2000.80.2039.0,請使用此確切版本,因為其他版本(例如ver.2000.80.194.0)對我不起作用。

如@charles所述,如果您尚未在已部署的項目中工作,請使用sqlsrv驅動程序,因為這些驅動程序當前已維護,而mssql基本上已被棄用。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM