【发布时间】:2018-02-09 10:36:22
【问题描述】:
我用 nginx/php5.6 安装了 Centos7。 MS SQL 2008 R2 正在另一台服务器上运行。 MSSQL 绝对允许 tcp 连接、自定义(非域)用户、禁用防火墙,我可以使用 HeidiSQL 和另一台 Windows 机器的设置连接到它。 我可以从 Centos 远程登录到 MSSQL(我看到日志错误“网络数据包有效负载中指定的长度与读取的字节数不匹配;连接已关闭。请联系客户端库的供应商。”在 MSSQL 中使用 centos ip 地址日志,所以这里没有错误)。
我无法使用 php_mssql 或 sqlcmd 从 centos 连接到 mssql;
在 sqlcmd 期间:
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
[root@***]# /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
[root@*]# 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
还尝试将其全部清理并安装带有 sqlsrv 扩展名的 php7.0 - 同样的问题;
有一些网络奇怪 - Centos serv 和 MSSQL 在不同的网络中,我无法从该服务器 ping mssql,但可以远程登录,我在连接尝试期间使用的是 ip,而不是主机名,所以不要认为它是很重要。
现在我不知道在哪里挖掘,有什么建议吗?
【问题讨论】:
-
你试过使用PDO with dblib driver吗?使用 php 5.6 和 MSSQL Server 2k8 在 debian 上运行良好...
-
@Ayak973 谢谢你的想法,是的,同样的错误。但是问题解决了,是网络配置错误造成的,我不明白怎么可能——建立telnet连接,但无法正常连接,但我们的IT人员不到半小时就修复了这个问题。
标签: php sql-server linux centos7 sqlcmd