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

标签 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。

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

最佳答案

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

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


安装先决条件: Microsoft Drivers for PHP for SQL Server 需要 SQL Native Client:

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

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

PHP MS SQL 驱动程序:

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

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 线程安全 VC9
  • PHP 5.3.5 线程安全 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 可以找到这些扩展,请确保 C:\PHP\PHP.INI 中的 extension_dir 指令设置为 C:\PHP\EXT:

extension_dir = C:\PHP\ext

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

enter image description here

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

enter image description here

关于php - IIS 上的 MSSQL 和 PHP 5.3.5 之间的连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425322/

相关文章:

php - 通过 mysql 值更改表行颜色

c# - 以编程方式更改 IIS 网站的 SSL 设置

iis - 通过代理设置 cookie

c# - 构建搜索功能的最佳方式

sql-server - 查找多父层次结构数据模型中两个节点之间的所有可能关系[SQL Server]

sql-server - 确定 SQL Server 中是否存在临时表的最佳方法是什么?

java小程序运行本地主机但在发布iis后不运行,作者:asp.net

php - 尝试从表中获取值

php - Mysql:在组合列中搜索

php - #34;而不是“在网站上显示