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

2022-08-31 00:26:59

我最近安装了IIS,PHP 5.3.5和MySQL,并让它们全部正常工作。

然后我对MS SQL也有要求,我认为这将是一项简单的任务,现在让我发疯,我不知道如何让它工作。

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

我下载并启用了它,但它不起作用。我发现新版本的PHP使用了不同的dll。所以我下载了新的,把它放在ext文件夹中,并更新了,但仍然没有运气。php_mssql.dllphp.iniphp.ini

php_info()仍然没有显示驱动程序已加载。

我即将卸载IIS和PHP,并安装Apache,我之前已经安装了Apache。

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


答案 1

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

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


安装先决条件:SQL Native Client 是 Microsoft Drivers for PHP for SQL Server 所必需的:

Microsoft SQL Server 2008 R2 Native Client X64 - 適用於 64 位 Windows

Microsoft SQL Server 2008 R2 Native Client X32 - 適用於 32 位 Windows

下载并安装与您的系统匹配的本机客户端驱动程序。

PHP MS SQL Drivers:

下载适用于 SQL Server 的 PHP 的 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 线程安全 VC6

要判断您安装了哪个版本,请打开与 等位于同一文件夹中的文件。不要使用记事本.exe因为该文件在开头只使用换行符 () 作为行尾(unix 格式),而记事本将它们分解成一行。snapshot.txtphp.exephp-cgi.exe\n

在文件中,您将看到一行(在第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:\PHPC:\PHP\EXT

打开并找到文件部分,然后添加:C:\PHP\PHP.INIDynamic Extensions

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

最后,为了确保PHP可以找到这些扩展名,请确保将 中的指令设置为:extension_dirC:\PHP\PHP.INIC:\PHP\EXT

extension_dir = C:\PHP\ext

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

enter image description here

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

enter image description here


答案 2

上面提到的:

扩展名=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

推荐