目标
使用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.iniextension=php_mssql.dll
并extension=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 及更高版本。