【问题标题】:Cannot Call function sqlsrv_connect()无法调用函数 sqlsrv_connect()
【发布时间】:2014-09-06 16:53:26
【问题描述】:

我经历了几个问题和建议来解决上述问题,但完全没有运气。

我有以下设置:

Windows Server 2008 R2

xampp-win32-1.8.2-5-VC9-installer

SQLSRV30 - php 驱动程序

sqlncli - Microsoft SQL Server 2008 R2 Native Client 设置

我安装了其他所有东西,并且在 php.ini 文件中有以下内容 下面的代码显示了 php 驱动程序所在的位置:

; On windows:
extension_dir="C:\xampp\php\ext"

以下是windows下的扩展

extension=php_pdo_sqlsrv_54_ts.dll
extension=php_sqlsrv_54_ts.dll

当我检查 phpinfo 文件时,没有列出 sqlsrv。我知道这可能意味着它没有安装,但它已安装。

以下是php信息文件:

我还重新启动了 apache 和服务器。我错过了什么吗?

我收到以下错误:

调用未定义函数 sqlsrv_connect()

这是我用来连接的代码:我正在连接到另一台托管 SQL Server 2005 的服务器

/Connection to SQL Server Database
    error_reporting(E_ALL);
$serverName = "172.xx.x.xxx";

$connectionInfo = array('Database'=>'Eque', "UID"=>"develop", "PWD"=>"develop");
$conn = sqlsrv_connect($serverName, $connectionInfo);


if($conn) {
     echo "Connection established.<br />";
}else {
    echo  "Connection could not be established.<br />";
    die(print_r(sqlsrv_errors(), true));
}

【问题讨论】:

  • 您是否在 php.ini 文件中启用了这些模块。如果不存在,请添加并重新启动服务器
  • 是的,@Sundar 我通过删除 ; 取消注释 php.ini 文件中的模块@
  • 启用ini设置后别忘了重启apache服务器

标签: php sql-server


【解决方案1】:

我一直在努力完成这个过程,这就是最终奏效的方法。我将 php 5.4.16 和 Apache 2.4.4 与 Sql Express 2008 R2 一起使用。

  1. Microsoft download site下载 Microsoft Drivers for PHP for SQL Server

  2. 将文件解压到本地文件夹

  3. 将 php_sqlsrv_54_ts.dll 和 php_pdo_sqlsrv_54_ts.dll 复制到 Ext 文件夹 (C:\wamp\bin\php\php5.4.16\ext)。您可以通过查看 Apache 下存储的 php.ini 文件中 extension_dir 的值来确认文件夹(C:\wamp\bin\apache\Apache2.4.4\bin)。
  4. 通过添加以下行为两个驱动程序添加扩展: 扩展=php_sqlsrv_54_ts.dll extension=php_pdo_sqlsrv_54_ts.dll 如果没有注释,则注释掉下面的现有行: ;扩展=php_pdo_mssql.dll ;extension=php_mssql.dll
  5. 启动所有 Wamp 服务

【讨论】:

    【解决方案2】:

    在 php.ini 文件中加载 PHP 驱动程序并重新启动服务器。

    extension=php_sqlsrv_53_ts.dll
    extension=php_pdo_sqlsrv_53_ts.dll
    

    参考: http://technet.microsoft.com/en-us/library/cc296203(v=sql.105).aspx

    TS 表示线程安全。发现你的服务器是线程安全的还是非线程安全的

    【讨论】:

    • 我使用的是 php 5.4.27。不是您为 php 5.3 推荐的驱动程序吗?我附上了 phpinfo 文件以获取更多详细信息
    • 这应该可以。无论如何,他们仍然没有发布 5.4,在驱动程序文件夹中再次检查它。你粘贴在 ext 文件夹中的内容。如果你 54 使用它或使用 53。53 会工作我以前用过它
    • 使用这个函数来测试你加载的扩展php.net/manual/en/function.extension-loaded.php
    • 还是没有运气。它不是加载的扩展的一部分
    • 我正在考虑在本地安装 sqlexpress 来测试它。我会在安装后发布任何更改。
    【解决方案3】:

    在 Windows 10 64 位和 php 5.6 上什么对我有用。是从这里下载的3.2版本的驱动:Microsoft SQL Server driver for PHP

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2020-07-13
      • 2012-11-22
      • 2016-04-09
      • 2016-01-23
      • 2014-03-27
      • 2016-09-08
      相关资源
      最近更新 更多