【发布时间】:2012-03-31 09:19:14
【问题描述】:
我正在尝试让 SQL Server 的 PHP PDO 驱动程序正常工作。我从 Microsoft 获得了文件。
我正在使用 PHP 5.3。我将php_pdo_sqlsrv_53_nts.dll 复制到我的PHP 扩展目录并修改了PHP.INI。错误日志显示
[2012 年 3 月 31 日 20:11:38] PHP 警告:PHP 启动:无法加载动态库 'c:\php\ext\php_pdo_sqlsrv_53_nts.dll' - 找不到指定的模块。
在第 0 行的未知中
该文件确实存在。我用 DEPENDS.EXE 检查了它,发现缺少 MSVCR100.DLL 和 MSVCP100.DLL,我运行了所有 VC++ 运行时包并获得了 DLL。 DEPENDS 报告了两个缺失的依赖项,LINKINFO.DLL 和 IESHIMS.DLL。不确定它们是什么。
我没有PHP_PDO.DLL;从我读到的内容表明 PHP 5.3+ 将 php_pdo.dll 构建到 PHP 中。phpinfo 有一个“PDO”部分,其中有 "PDO drivers" = "no value"。我不确定这个值是否应该是这个值。
我尝试按照另一篇文章中的建议重新启动网络服务器(而不是仅仅重新启动服务),但这并没有解决问题。
在带有 IIS 的 Windows Server 2008 和 x64 上运行。
【问题讨论】:
-
显示 php.ini 的相关 sn-ps。另外,Apache 还是 IIS? (假设 IIS 因为将 nts 与 Apache 一起使用会很糟糕。)
-
在对 PHP.ini 进行更改时,您应该始终重新启动您的网络服务器!这不是解决方法,而是常见做法,绝对必要!听起来可能有两个问题。 1) .dll 文件不在正确的位置,或者有轻微的输入错误。你确定它是正确的吗? 2) 您的 PDO 驱动程序也可能未加载。您认为
php_pdo.dll是从 PHP 5.3+ 自动加载到 PHP 中的想法是正确的。您确定使用正确版本的 PHP。我们能看到phpinfo()的sn-p 吗? -
@Corbin 很抱歉,我的部分帖子似乎被截断了;它是使用 IIS 在 x64 上运行的 Windows Server 2008。
-
@BenCarey 措辞很糟糕,我尝试重新启动 IIS,这里有另一个帖子,解决方案是重新启动服务器,而不是服务。所以我都尝试了..
-
@BenCarey 更新为在 pastebin.com/H6p9Ra3U 处显示 PHP 信息
标签: php sql-server pdo