我用nginx/php5.6安裝Centos7。 MS SQL 2008 R2正在另一臺服務器上工作。 MSSQL絕對允許TCP連接,自定義(非域)用戶,防火牆被禁用,我可以使用HeidiSQL連接到它並從另一臺Windows機器進行設置。 我可以從Centos遠程登錄到MSSQL(我看到日誌錯誤「網絡數據包有效載荷中指定的長度與讀取的字節數不匹配;連接已關閉,請與客戶端庫的供應商聯繫」。 MSSQL日誌,所以這裏沒有錯誤)。從Centos7到mssql的連接錯誤
我無法使用php_mssql或sqlcmd從centos連接到mssql;
在SQLCMD:
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
[[email protected]***]# /opt/mssql-tools/bin/sqlcmd -S *** -U ***
Password:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Timeout error [258]. .
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Unable to complete login process due to delay in prelogin response.
在PHP互動:
php > mssql_connect('***:***', '***','***');
PHP Warning: mssql_connect(): Unable to connect to server: *** in php shell code on line 1
我也試過TSQL/freetds的:
/etc/freetds.conf has section
[myserver]
host = ***
port = ***
client charset = UTF-8
tds version = 8.0 //also tried 7
[[email protected]*]# tsql -S myserver -U ***
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
5 //begins to count, i could't understand what does it mean
還試圖清理這一切,並安裝php7.0與sqlsrv擴展 - 同樣的問題;
有一些網絡很奇怪 - Centos serv和MSSQL位於不同的網絡中,我無法從該服務器ping通mssql,但可以telnet,我在連接嘗試期間使用ip而不是主機名,所以不要認爲這是一個大問題。
現在我不知道該在哪裏挖掘,有什麼建議嗎?
您是否嘗試過使用[PDO with dblib driver](http://php.net/manual/en/ref.pdo-dblib.php)?在使用php 5.6和MSSQL Server 2k8的debian上工作得很好... – Ayak973
@ Ayak973謝謝你的想法,是的,同樣的錯誤。但是問題解決了,這是由於網絡配置錯誤造成的,我不明白它是如何實現的 - 建立telnet連接,但無法正常連接,但我們的IT人員在不到半個小時的時間內修復了這個問題。 – NiPh