我最近安装了 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 驱动程序:
该文件是一个自解压可执行文件,因此只需使用 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.exe
、php-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()
。如果一切顺利,您应该会看到:
如果您还加载了 PDO 驱动程序,您应该会看到:
关于php - IIS 上的 MSSQL 和 PHP 5.3.5 之间的连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425322/