繁体   English   中英

将 PDO SQLSRV 与 PHP 一起使用不起作用

[英]Using PDO SQLSRV with PHP not working

我一直在试图让PDO SQLSRV工作(在Windows Server 2012中R2),而现在,发现说明书上,我应该如何设置它,这样在启动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

在此处输入图片说明

我错过了什么吗?

更新

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

Architecture=x64, Thread Safety=disabled, PHP Version=7.2.2, Microsoft ODBC Driver 17 for SQL Server

更新二

我已尝试删除除我需要的 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 打印输出中。

还有其他关于我可以尝试的建议吗?

更新

昨天我从这里重新安装了 PHP 7.2(现在是 7.2.6 版)。 并从此处重新安装 Microsoft Drivers 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 位于同一文件夹中。 我已按照我在此处找到的说明进行操作,但似乎没有任何方法可以加载该 SQL SRV dll。

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

另一个问题在这里

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM