无法在IIS上使用PHP连接到MSSQL

时间:2011-04-28 15:03:41

标签: php sql-server iis odbc-sql-server-driver

我已经在寻找2天的解决方案了。我得到了以下效果:

   array(2) {
  [0] => array(6) {
    [0] => string(5) "IMSSP"
    ["SQLSTATE"] => string(5) "IMSSP"
    [1] => int(-49)
    ["code"] => int(-49)
    [2] => string(390) "This extension requires either the Microsoft SQL Server 2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client ODBC Driver to communicate with SQL Server.  Neither of those ODBC Drivers are currently installed. Access the following URL to download the Microsoft SQL Server 2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712"
    ["message"] => string(390) "This extension requires either the Microsoft SQL Server 2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client ODBC Driver to communicate with SQL Server.  Neither of those ODBC Drivers are currently installed. Access the following URL to download the Microsoft SQL Server 2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712"
  }
  [1] => array(6) {
    [0] => string(5) "IM002"
    ["SQLSTATE"] => string(5) "IM002"
    [1] => int(0)
    ["code"] => int(0)
    [2] => string(91) "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
    ["message"] => string(91) "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
  }
}

看起来没有“Microsoft SQL Server 2008 R2 Native Client”,但有!

我已在本地计算机和测试服务器上使用了相同的配置。 当没有安装“Microsoft SQL Server 2008 R2 Native Client”时,我在本地计算机上遇到同样的错误。安装后,问题就解决了。

不幸的是,我看不到任何变化。

我正在尝试不同的PHP和sqlsrv驱动程序,但这没有效果。

我无法体验到很多,因为这是实时服务器。

我怎样才能使这个工作?这是否与控制面板ODBC设置有关?还安装了另一个本机客户端,但我无法将其从此实时服务器中删除。

如何阅读此信息? php sqlsrv驱动程序是否完全看到本机客户端?

修改

问题在于我使用32位的所有内容。本机驱动程序也显示在ODBC控制面板中。 PHP的Sqlsrv扩展也如phpinfo所示。

PHP的sqlsrv扩展如何不“看到”该本机客户端?

我无能为力,现在我正在设置虚拟机,我将设置与网络服务器完全相同的配置,并进行更大胆的实验。

2 个答案:

答案 0 :(得分:2)

在服务器上安装32位和64位驱动程序。 32位odbc控制面板位于Windows \ SysWow64目录中 - 不是很明显,但就是这样。确保你有可执行文件的驱动程序(PHP) - 如果它是32位,你需要32位驱动程序。

答案 1 :(得分:1)

您似乎遇到了与本周相同的问题

我下载了Process Monitor并按照此帖子上的说明进行操作

http://www.iislogs.com/articles/processmonitorw3wp/

然后我看到进程w3wp.exe在此注册表项上被拒绝访问

HKLM \ Software \ ODBC \ ODBCINST.INI \ SQL Native Client 10.0

我打开RegEdit并转到那把钥匙。

我点击了右键 - >权限并将网络服务添加到列表中并为其授予读取权限。

回收了应用程序池,它现在正在运行!

希望它有所帮助。

干杯, FEDE