【问题标题】:PHP PDO sqlsrv Undefined class constant SQLSRV_ENCODING_UTF8PHP PDO sqlsrv 未定义的类常量 SQLSRV_ENCODING_UTF8
【发布时间】:2016-10-18 15:10:07
【问题描述】:

我有一个连接到 SQL Server 2008 数据库的 Codeigniter 3 应用程序。我们使用 Windows server 2012 r2 64bit、SQL Server Express 2012 和带有 php 5.6 的 xampp 设置了一个新的虚拟机。

我们将应用移至其中,安装 MSODBC 并将 pdo_sqlsrv 3.2 版 dll 添加到扩展文件夹并将其加载到 ini 文件中,但是当我们启动应用时,我们收到以下错误消息:

Undefined class constant SQLSRV_ENCODING_UTF8 in pdo_sqlsrv_driver.php on line 144

我检查了文档,一切似乎都正确,因此我们尝试重新安装所有内容,但没有成功。可能是什么问题?

【问题讨论】:

  • 您有最新的 PHP/PDO 驱动程序吗?该常量在 Microsoft 的库中定义(仅限基于 Windows 的 PHP):msdn.microsoft.com/en-us/library/… 就我而言,我通过使用 ODBC 连接解决了这个问题:geekanddummy.com/codeigniter-3-connecting-to-ms-sql-from-linux
  • 经过更多研究后,我通过在 sql server 配置管理器中指定默认 tcp 端口来修复它
  • 相当误导的错误信息,嗯!
  • 我面临同样的问题并正在寻找解决方案
  • 我也面临同样的问题

标签: php codeigniter pdo sql-server-2012 xampp


【解决方案1】:

您的 PHP 安装中可能有错误的 PDO 驱动程序。我在几个 Windows 服务器上运行 PHP/CodeIgniter,并且在初始设置时遇到了错误驱动程序的问题。

由于您使用的是 PHP 5.6,因此您需要确保 php_pdo_sqlsrv_56_ts.dllphp_pdo_sqlsrv_56_nts.dll 驱动程序位于 PHP /ext/ 目录中。然后,在您的 php.ini 文件中,您需要确保这两个扩展名都未注释:

extension=php_sqlsrv_56_nts.dll
extension=php_pdo_sqlsrv_56_nts.dll

一旦取消注释这两个,请确保注释掉对 SQL Server 驱动程序的其他引用。如果这没有帮助,请查看另一篇文章:Xampp MS SQL server PHP 5.6

调整好php.ini文件后,记得通过IIS重启站点。

【讨论】:

    【解决方案2】:

    对于寻找此错误解决方案的人,我通过在 SQL Server 配置管理器中指定默认 TCP 端口来修复它。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 2011-01-26
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多