无法调用函数sqlsrv_connect()

5

我翻遍了一些问题和建议来解决上面的问题,但是完全没有运气。

我有以下设置:

Windows Server 2008 R2

xenter image description hereampp-win32-1.8.2-5-VC9-installer

SQLSRV30 - php驱动程序

sqlncli - Microsoft SQL Server 2008 R2本地客户端设置

我安装了其他所有东西,并且在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
是的,@Sundar我通过删除“;”在php.ini文件中取消了模块的注释。 - kya
启用 ini 设置后,不要忘记重新启动 Apache 服务器。 - Sundar
3个回答

8

我在这个过程中经历了很多挣扎,最终找到了解决方法。我正在使用php 5.4.16和Apache 2.4.4以及Sql Express 2008 R2。

  1. Microsoft下载站点下载 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. 添加这些行以为两个驱动程序添加扩展名: extension=php_sqlsrv_54_ts.dll extension=php_pdo_sqlsrv_54_ts.dll ,如果没有注释,请注释掉以下现有行: ;extension=php_pdo_mssql.dll ;extension=php_mssql.dll
  5. 启动所有Wamp服务

4

我正在使用php 5.4.27。你推荐的驱动程序不是针对php 5.3吗?我附上了phpinfo文件以获取更多详细信息。 - kya
仍然没有运气。它不是已加载的扩展的一部分。 - kya
它是线程安全的。我在Apache文件中发现以下错误:[Wed Jul 16 14:10:15.445328 2014] [ssl:warn] [pid 2772:tid 304] AH01909: www.example.com:443:0服务器证书不包括与服务器名称匹配的ID [Wed Jul 16 14:10:15.710526 2014] [ssl:warn] [pid 2772:tid 304] AH01909: www.example.com:443:0服务器证书不包括与服务器名称匹配的ID [Wed Jul 16 14:10:15.757326 2014] [mpm_winnt:notice] [pid 2772:tid 304] AH00354: 子进程:启动150个工作线程。 - kya
@user2995165 看起来端口可能被占用,因此出现了错误。请查看https://dev59.com/gGQm5IYBdhLWcg3wqwbn。 - Sarah
1
我正在考虑在本地安装sqlexpress进行测试。安装后,我会发布任何更改。 - kya
显示剩余8条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接