将 PDO SQLSRV 与 PHP 一起使用不起作用
Using PDO SQLSRV with PHP not working
我一直在尝试让 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下应该是mysql
和sqlsrv
,但是我只看到mysql
.
我是不是漏掉了什么?
更新
我尝试更新 php.ini 文件,使其具有这些扩展的完整路径,但仍然没有任何区别。
架构=x64,线程安全=禁用,PHP版本=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 打印输出中。
对于我可以尝试的方法还有其他建议吗?
更新
昨天我从 here. And reinstalled the Microsoft Drivers 5.2 for PHP for SQL Server from here 重新安装了 PHP 7.2(现在是 7.2.6 版)。并像这样更新了我的 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。
我终于弄明白了并让它工作。我尝试安装需要 Composer 的 CakePHP。因此,在安装 Composer 时,我遇到了一个我以前从未见过的错误,并发布了一个关于该问题的问题。最终结果是我不得不再次干净地重新安装 PHP 然后更新 php.ini 所以只有 PDO SQLSRV 的 TS 版本。
另一个问题是
如果有人偶然发现这个,如果你不在 php.ini 中取消对 ext dir conf 的注释,它将不会加载模块,看起来很简单,但很多人(包括我)注意到了,我预计 PHP会查看它的默认目录。
我一直在尝试让 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下应该是mysql
和sqlsrv
,但是我只看到mysql
.
我是不是漏掉了什么?
更新
我尝试更新 php.ini 文件,使其具有这些扩展的完整路径,但仍然没有任何区别。
架构=x64,线程安全=禁用,PHP版本=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 打印输出中。
对于我可以尝试的方法还有其他建议吗?
更新
昨天我从 here. And reinstalled the Microsoft Drivers 5.2 for PHP for SQL Server from here 重新安装了 PHP 7.2(现在是 7.2.6 版)。并像这样更新了我的 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。
我终于弄明白了并让它工作。我尝试安装需要 Composer 的 CakePHP。因此,在安装 Composer 时,我遇到了一个我以前从未见过的错误,并发布了一个关于该问题的问题。最终结果是我不得不再次干净地重新安装 PHP 然后更新 php.ini 所以只有 PDO SQLSRV 的 TS 版本。
另一个问题是
如果有人偶然发现这个,如果你不在 php.ini 中取消对 ext dir conf 的注释,它将不会加载模块,看起来很简单,但很多人(包括我)注意到了,我预计 PHP会查看它的默认目录。