我是 MySQL/Apache 用户,正在尝试使用 IIS 和 SQL 服务器,如果这是一个愚蠢的问题,请耐心等待。
我正在使用 IIS 7.5 版。PHP 5.3.13 版和 SQL Server 2005 IIS 在端口 90 上运行,不确定这是否会产生影响。我知道我的 sql server 正在运行,因为我可以在 Server management studio 中探索/连接到它。
我知道 php 配置正确,因为 //localhost:90/phpinfo.php 工作正常。
我将 phpinfo 中的 php_msql.dll 扩展更新为:extension=ext/php_msql.dll
编辑-但是,当我在“配置命令”行下运行 phpinfo() 时,会出现:--without-mssql
我找到/下载了 ntwdblib.dll 并将其放在 sys32 和 php 根目录中。
所有这些事情都应该解决这个问题,但他们没有。
这是我正在使用的代码,直接来自 php.net:
<?php
// Server in the this format: <computer>\<instance name> or
// <server>,<port> when using a non default port number
$server = 'localhost';
// Connect to MSSQL
$link = mssql_connect($server, 'uname', 'pwd');
if (!$link) {
die('Something went wrong while connecting to MSSQL');
}
?>
显然我使用的是真实的用户名和密码,但是当我在浏览器中加载文件时,我收到了 500 错误。检查日志后,显示如下:
2012-06-25 12:41:29 ::1 GET /test.php - 90 - ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/536.5+(KHTML,+like+Gecko )+Chrome/19.0.1084.56+Safari/536.5 500 0 0 5
那(对我来说)对我帮助不大。我究竟做错了什么?
谢谢
尝试将实例名称附加到服务器名称。下面从http://php.net/manual/en/function.mssql-connect.php抓取
编辑
另外,验证以下内容:
还要确保在安装后仍然有问题运行 PHPinfo 并检查是否找到以下内容:
使用以下方法之一指定服务器。
hostname:port
(Linux) 或hostname,port
(Windows).\MSSQLINSTANCENAME
COMPUTER\MSSQLINSTANCENAME
使用 ODBC 连接器
添加...“SQL Server”
好吧,所以我在 2/3 天后找到了答案。显然从 php 5.3 开始,php 在 IIS 上运行时不再使用 msql.dll 扩展名。现在,它使用名为 sqlsrv.dll 的东西代替它。此外,随着这个新的扩展,需要使用来自此处可用的 php 的 sqlsvr api。所以本质上,当我应该使用 sqlsrv_connect 时,我使用的是 mssql_connect。
这仍然没有解决我的错误日志记录问题,我仍然无法连接到服务器,但这是由于错误的用户名/密码组合造成的。
所以感谢大家的帮助,希望有人能在某个时候发现这有用。