如何在PHP 5.6 TS中为MSSQL启用PDO?

时间:2016-06-24 18:44:14

标签: php sql-server apache pdo php-5.6

我在端口8080上的Windows Server 2012 R2上安装了PHP 5.6.23(线程安全)和Apache 2.4.20。我正在尝试启用PDO以连接到MS SQL Server。 php docs表示我需要从Microsoft

下载驱动程序

然后我应该将下载的.dll文件移到ext文件夹中。然后,将以下行添加到php.ini文件以启用新扩展名

extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll

最后,我重新启动Apache服务以加载新配置。但是当我尝试访问连接到MS SQL Server的PHP脚本时,我收到以下错误

Fatal error: Undefined class constant 'SQLSRV_ATTR_ENCODING'

然后,当我查看phpinfo()输出时,我看到php没有像预期的那样用mssql扩展编译。这是我看到的

Configure Command   cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"

我还需要做什么才能正确启用php 5.6.23中的PDO-MSSQL?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。要解决此问题,请打开php.ini文件并查找变量Extension_dir变量。它可能设置为ext。将ext的值更改为文件夹ext所在的完整路径。

假设PHP文件夹在C驱动器上,就像这样

extension_dir = "C:/php/ext/" 

我希望它有效

答案 1 :(得分:-1)

请注意,Microsoft有一段时间没有更新此驱动程序。基于针对源代码头修订版(来自codeplex)的补丁,有基于PHP 5.5的非官方版本,以及未经证实的传言,即使用PHP 5.6构建源代码很困难。

官方版本仅针对PHP 5.2,5.3和5.4发布。

这些问题可能同时适用于PDO驱动程序(pdo_sqlsrv)和非PDO驱动程序(sqlsrv扩展名),因为它们似乎是一起构建和发布的。