IIS上的MSSQL和PHP 5.3.5之间的连接不起作用

时间:2011-03-24 20:47:36

标签: php sql-server iis dll

我最近安装了IIS,PHP 5.3.5和MySQL,并且一切正常。

我对MS SQL也有要求,而且我认为这是一项简单的任务,现在让我发疯,我无法弄清楚如何让它发挥作用。

根据php_info(),MS SQL驱动程序未加载。

我已下载php_mssql.dll并在php.ini启用了它,但它无效。我发现新版本的PHP使用了不同的dll。所以我下载了新文件,将其放在ext文件夹中,并更新了php.ini,但仍然没有运气。

php_info()仍未显示已加载驱动程序。

我即将卸载IIS和PHP,并安装我之前安装过的Apache。

这个问题是我的最后一次尝试,任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:37)

这是来自客户常见问题解答的片段我刚刚写了一段时间来帮助我们的专用托管客户使用MS SQL驱动程序启动PHP。它可能会复制上述评论中已经传授的一些知识,但它的完整性也可以帮助其他人从头开始:

注意:显然,自从我写这篇文章以来,PHP版本号已经发生了变化,但一般原则仍然适用。


安装先决条件: SQL驱动程序的Microsoft驱动程序需要SQL Native Client:

  

Microsoft SQL Server 2008 R2 Native Client X64 - for 64 bit Windows
      或
  Microsoft SQL Server 2008 R2 Native Client X32 - for 32 bit Windows

下载并安装与您的系统匹配的Native Client驱动程序。

PHP MS SQL驱动程序:

下载适用于SQL Server的Microsoft驱动程序:

  

Microsoft Drivers for PHP for SQL Server

该文件是一个自解压缩的可执行文件,因此只需使用7zip或WinRAR并将文件解压缩到您选择的文件夹中。我们现在需要决定选择哪种驱动程序与您的PHP安装相匹配。

PHP 5.3.5有四种不同的版本:

  • PHP 5.3.5非线程安全VC9
  • PHP 5.3.5非线程安全VC6
  • PHP 5.3.5 Threadsafe VC9
  • PHP 5.3.5 Threadsafe VC6

要确定您安装的版本,请打开snapshot.txt文件,该文件与php.exephp-cgi.exe等位于同一文件夹中。请勿使用notepad.exe,因为该文件仅使用换行(\n)表示行尾(unix格式),记事本将这些行换成一行。

在文件中,您会看到一行(在第6行附近,或者您使用记事本的第1行的中间附近),首先是:Build:

Build: D:\php-sdk\snap_5_3\vc9\x86\obj\Release - non-threadsafe, VC9 build
Build: D:\php-sdk\snap_5_3\vc6\x86\obj\Release - non-threadsafe, VC6 build
Build: D:\php-sdk\snap_5_3\vc9\x86\obj\Release_TS - threadsafe, VC9 build
Build: D:\php-sdk\snap_5_3\vc6\x86\obj\Release_TS - threadsafe, VC6 build

这告诉我们您正在运行的PHP版本。

从解压缩MS SQL PHP驱动程序的文件夹中,选择与正在使用的PHP版本匹配的驱动程序(如果您没有使用PDO,则无需复制php_pdo_驱动器):

PHP 5.3.5 Non-threadsafe VC9: php_sqlsrv_53_nts_vc9.dll, php_pdo_sqlsrv_53_nts_vc9.dll
PHP 5.3.5 Non-threadsafe VC6: php_sqlsrv_53_nts_vc6.dll, php_pdo_sqlsrv_53_nts_vc6.dll
PHP 5.3.5 Threadsafe VC9: php_sqlsrv_53_ts_vc9.dll, php_pdo_sqlsrv_53_ts_vc9.dll
PHP 5.3.5 Threadsafe VC6: php_sqlsrv_53_ts_vc6.dll, php_pdo_sqlsrv_53_ts_vc6.dll

假设您的PHP安装位于C:\PHP,请将这些文件复制(不要移动)到C:\PHP\EXT文件夹。

打开C:\PHP\PHP.INI并找到文件的Dynamic Extensions部分并添加:

extension=php_sqlsrv_53_nts_vc9.dll
extension=php_pdo_sqlsrv_53_nts_vc9.dll   <-- optional

最后,为了确保PHP可以找到这些扩展,请确保extension_dir中的C:\PHP\PHP.INI指令设置为C:\PHP\EXT

extension_dir = C:\PHP\ext

重新启动IIS并调用phpinfo()。如果一切顺利,你应该看到:

enter image description here

如果您还加载了PDO驱动程序,您应该看到:

enter image description here

答案 1 :(得分:1)

上面提到:

  

延长= php_sqlsrv_53_nts_vc9.dll
  延长= php_pdo_sqlsrv_53_nts_vc9.dll

我发现的不正确。

因此,很可能是:

extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll