3

目标

使用FreeTDS (php_dblib.dll 0.82 + 20110906 补丁) Drivers for PHP 5.4.16 (VC9)连接到MSSQL 2008 R2服务器。

除非客户也决定使用替代品,否则我无法使用 FreeTDS 的任何替代品。这不太可能,除非他们明天在升级当前版本的 PHP(当前为 5.3.x)时也遇到此问题。

问题

PHP 无法加载 FreeTDS 扩展。

Apache 错误日志在服务器启动时显示:

PHP Warning:  PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.4.16/ext/php_dblib.dll' - The specified module could not be found.\r\n in Unknown on line 0

据我了解,扩展名是找不到还是版本错误?

php.ini 中的扩展目录位置已经过检查和三重检查,并且是:

c:/wamp/bin/php/php5.4.16/ext/

这让我相信这是 php_dblib.dll 的错误版本。我也多次检查并确保使用 PHP 5.4.X Thread Safe 的版本。

采取的步骤

  • 使用 PHP 5.4.16 和 Apache 2.4.4 全新安装 WAMP 2.4
  • 线程安全的 php_dblib.dll 放置在 PHP 扩展目录中
  • extension=php_dblib.dll添加到正确的 php.ini
  • extension=php_mssql.dllextension=php_pdo_mssql.dll在 php.ini 中禁用
  • msvcr71.dll (DotNet framework 1.1) 添加到 PHP 根目录
  • freetds.conf 添加到服务器根目录 (c:)

系统详情

  • WAMP 服务器 2.4
  • 阿帕奇 2.4.4
  • PHP 5.4.16 (VC9)
    • 线程安全:启用
  • FreeTDS 线程安全 (php_dblib.dll) 0.82 + 20110906 补丁
  • 微软 SQL Server 2008 R2
  • msvcr71.dll (DotNet framework 1.1)仅包含在 PHP 根目录中

编辑:

  • WAMP 2.4 32 位
  • 操作系统:Windows 7 Pro 64 位

编辑 3

上次更新仅适用于 64 位版本的 WAMP。我再次安装了 32 位版本,并且--without-dblib不再位于 phpinfo() 的配置命令部分。

问题

  • 有了所提供的信息,您还需要了解什么才能准确评估情况吗?
  • 我找不到任何问题,但 FreeTDS 0.82 和 PHP 5.4.16 是否存在任何已知问题?

暂时失败

我现在已经回滚到 PHP 5.3.x,FreeTDS 在那个版本上运行良好。我不确定它是否会对我实际交付给客户的少量代码产生影响。这是一个“双重”检查,以确保一切正常,但由于我将在安装期间在现场,如果出现任何问题,我可以解决。

我想最终找到一个解决方案,因为我每天使用的越来越多的系统都将升级到 php 5.4 及更高版本。

4

0 回答 0