【发布时间】:2016-07-01 09:13:38
【问题描述】:
我点击此链接:https://docs.moodle.org/23/en/Installing_MSSQL_for_PHP 在 Windows 64 位的 PHP 5.5.3 中成功安装 php_dblib.dll(它是为 Windows 64 位编译的 FreeTDS)。 phpinfo() 的输出显示:
Environment
...
FREETDS d:\portable_sw\php-5.5.30-Win32-VC11-x64\conf
...
mssql
MSSQL Support enabled
Active Persistent Links 0
Active Links 0
Library version FreeTDS
...
看起来 PHP 引擎捕获了 freetds.conf 所在的位置,并且 mssql 库安装正常。在我的 freetds.conf 中,我将服务器名称“mydb”定义为:
[mydb]
host = 10.18.1.11
port = 1433
client charset = cp950
tds version = 7.0
但是当我在浏览器中使用以下 php 语句运行 PHP 脚本时:
$conn = mssql_connect('mydb', 'myuid', 'mypwd') or mydie('open mydb failed!');
它只是在那里挂了一会儿,然后浏览器显示:
Cannot connect to the website
Please make sure:
- You have entered the correct URL.
- You are connected to the Internet.
- Your firewall is properly configured.
- The website is not encountering any technical problem at the moment.
Error code 101 (net::ERR_CONNECTION_RESET)
如果我将“mydb”更改为“10.18.1.11”,则连接正常。似乎 freetds.conf 中的设置被忽略了。可能是什么原因,我该如何解决?
【问题讨论】:
-
试用 sqlsrv,Windows 上 PHP 的原生 SQL Server 驱动程序:php.net/manual/en/book.sqlsrv.php, microsoft.com/en-us/download/details.aspx?id=20098
-
我也用sqlsrv。但在这种情况下,我有一堆旧的 PHP 程序已经使用 mssql_* 函数来访问 MSSQL 7.0 服务器。这就是我在这里坚持使用 mssql 库的原因。
-
您可以将
$conn = mssql_connect('mydb', 'myuid', 'mypwd') or mydie('open mydb failed!');更改为$conn = mssql_connect('mydb', 'myuid', 'mypwd');以查看实际的错误消息吗?我对 Windows 上的 FreeTDS 不是很熟悉,但是是否有与tsql等效的测试工具? -
它没有显示任何内容。在httpd的error.log中显示:
[Tue Jul 12 11:50:50.618293 2016] [mpm_winnt:notice] [pid 4036:tid 260] AH00456: Apache Lounge VC11 Server built: Oct 13 2015 11:37:51[Tue Jul 12 11:50:50.618293 2016] [core:notice] [pid 4036:tid 260] AH00094: Command line: 'httpd -d D:/portable_sw/httpd-2.4.17-win64-VC11'[Tue Jul 12 11:50:50.621294 2016] [mpm_winnt:notice] [pid 4036:tid 260] AH00418: Parent: Created child process 5384[Tue Jul 12 11:50:50.836306 2016] [mpm_winnt:notice] [pid 5384:tid 276] AH00354: Child: Starting 64 worker threads.。 -
现在连IP地址的方式都行不通了。我已经使用了一些mssql客户端工具来连接服务器,没关系。所以我确定是驱动问题。
标签: php windows freetds mssql-jdbc