使用PDO SQLSRV与PHP无法正常工作

时间:2018-05-16 19:22:27

标签: php pdo sqlsrv

我一直试图让PDO SQLSRV在(在Windows服务器2012 R2中)工作一段时间,并找到instructions关于我应该如何设置它以便驱动程序加载启动PHP,但它无法正常工作。

我找到了正确的php.ini文件(并通过注释掉一些其他PDO驱动程序进行测试以确保)。我在[ExtensionList]的末尾添加了相应的行,如下所示:

extension=php_pdo_sqlsrv_7_ts_x64.dll

我添加了其中几个,但没有任何效果。我通过运行带有phpinfo()的脚本来检查它,以告诉我发生了什么。扩展名列表如下所示:

[ExtensionList]
; extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_pdo_mysql.dll
; extension=php_pdo_sqlite.dll
extension=php_imap.dll
extension=php_tidy.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll
extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll
extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_72_ts_x64.dll
extension=php_sqlsrv_72_ts_x64.dll
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_nts_x64.dll
extension=php_pdo_sqlsrv_72_ts.dll
extension=php_sqlsrv_72_ts.dll

因此,在PDO下应该是mysqlsqlsrv,但我只看到mysql

enter image description here

我错过了什么吗?

更新

我尝试更新php.ini文件,以便它具有这些扩展的完整路径,但仍然没有任何区别。

架构= x64,线程安全=禁用,PHP版本= 7.2.2,用于SQL Server的Microsoft ODBC驱动程序17

更新II

我尝试删除除了我需要的2之外的所有引用,并为它们提供了完全限定的目录路径:

[ExtensionList]
; extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
; extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlsrv_72_nts_x64.dll"
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlsrv_7_nts_x64.dll"
extension=php_pdo_sqlsrv.dll
extension=php_imap.dll
extension=php_tidy.dll

我仍然无法使SQL SRV正常工作,它仍然没有出现在PHPInfo中。

对于我可以尝试的内容还有其他建议吗?

更新

昨天我从here重新安装了PHP 7.2(现在的版本7.2.6)。并从here重新安装了Microsoft驱动程序5.2 for PHP for SQL Server。并更新了我的php.ini文件,如下所示:

[ExtensionList]
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_imap.dll
extension=php_tidy.dll
extension=php_pdo_sqlsrv.dll
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlite.dll"
; extension=php_pdo_mysql.dll
extension=php_mysqli.dll

看看这是否会有所帮助或有所作为。 php_pdo_sqlsrv.dll仍然没有加载,然后php_pdo_sqlite.dll加载了,它们都与php_mysqli.dll同时加载了文件夹。我已经按照我发现here的说明进行操作,似乎没有任何工作可以加载SQL SRV dll。

2 个答案:

答案 0 :(得分:0)

我终于能够弄清楚并使其正常工作。我尝试安装需要Composer的CakePHP。因此,在安装Composer时,出现了一个以前从未见过的错误,并发布了一个有关此的问题。最终结果是,我不得不重新干净地安装PHP,然后更新php.ini,以便只有TS版本的PDO SQLSRV。

另一个问题是here

答案 1 :(得分:0)

如果有人偶然发现了这个问题,如果您不取消注释php.ini中的ext dir conf,它将不会加载模块,看起来很简单,但是很多人(包括我)注意到了,我希望PHP会使用它的默认目录。 / p>