【问题标题】:Fatal error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs致命错误:调用 C:\xampp\htdocs 中的未定义函数 sqlsrv_connect()
【发布时间】:2015-08-24 12:57:53
【问题描述】:

我正在使用

  • Xampp 版本 3.2.1 和 PHP 版本 5.6.8。
  • Microsoft Azure SQL 服务器

目标

我正在尝试创建一个可以访问我的数据库并能够SELECTINSERTUPDATEUPDATE的网络应用程序strong>DELETE 记录。


问题

我无法连接到数据库服务器


错误

致命错误:调用未定义的函数 sqlsrv_connect() C:\xampp\htdocs\BLT\Employee_Database .php 第 25 行


代码

<html>
<head>
    <Title>Employee Database</Title>
</head>
<body>
<form method="post" action="?action=add" enctype="multipart/form-data">
    Last name <input type="text" name="LastName" id="LastName"/></br>
    First name <input type="text" name="FirstName" id="FirstNamne"/></br>
    E-mail address <input type="text" name="Email" id="Email"/></br>
    User Id <input type="text" name="UserId" id="UserId"/></br>
    Password <input type="password" name="Password" id="Password"/></br>
    <input type="submit" name="submit" value="Submit"/>
</form>

<?php
$serverName = "jy4nij6vuy.database.windows.net,1433";
$connectionOptions = array("Database" => "robertfarb",
    "UID" => "robertFarb",
    "PWD" => "******");
$conn = sqlsrv_connect($serverName, $connectionOptions);

if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
?>

</body>
</html>

这是我迄今为止尝试过的

  • 我已安装 Microsoft PHP for SQL 驱动程序并按照所有说明加载驱动程序,但它似乎无法正常工作!
  • 我将php_sqlsrv_56.ts.dll 文件添加到PHP 的扩展文件夹中,还添加了php_pdo_sqlsrv_56.ts.dll
  • 我还在 php.ini 文件中添加了 extension=php_sqlsrv_56.ts.dll 行。

任何帮助将不胜感激!

【问题讨论】:

  • 只是因为您将文件放在某处并告诉 php 加载它并不意味着 php 可以实际加载它。如果函数没有定义,那么你提供了一个无效的库(例如错误的版本,错误的编译器)并且 php 跳过它,因为它不可加载。检查服务器错误日志以查看 php 启动期间发生的情况。
  • 谢谢!在哪里可以查看服务器错误日志?
  • 它将在 php.ini 中定义,只要 xamp 保留它。
  • 这是我发现的错误:PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_sqlsrv_56_ts.dll' - 找不到指定的模块。
  • 任何想法@marc-b ?>

标签: php sql sql-server xampp azure-sql-database


【解决方案1】:

MSSQL 扩展在 PHP 5.3 的 Windows 上不再可用 或更晚。 SQLSRV,MS SQL 的替代驱动程序可从 微软: » http://www.microsoft.com/en-us/download/details.aspx?id=20098

一步一步

  1. 从以下位置下载 SQLSRV32.EXE(Microsoft Drivers for PHP for SQL Server):http://www.microsoft.com/en-us/download/details.aspx?id=20098

  2. 选择路径:C:\xampp\php\ext

  1. php.ini 中取消注释或附加extension = php_sqlsrv_56_ts.dll

  2. 从 XAMPP 控制面板重新启动 Apache(停止/启动)

我测试了它,它可以 100% 工作

您可以在official Microsoft Git repository 中找到最新编译的二进制文件。

【讨论】:

  • 这正是我所做的,但我仍然无法加载驱动程序。还有其他想法吗?
  • 请确保dll文件在ext文件夹中
  • ext文件夹中没有php_sqlsrv_56_ts.dll文件,怎么办??
【解决方案2】:

Lea 的回答应该对你有用。从 Web PI 下载 PHP 5.6 非常重要 - https://www.microsoft.com/web/downloads/platform.aspx

确保在将 Web PI 下载到计算机时使用 IE。

【讨论】:

    【解决方案3】:

    我遵循了 Lea Tano 指南,但没有工作。我需要更多步骤。 至少对于 Windows7(或我的系统)有一些缺失的步骤(即那些没有在同一服务器/机器上安装 MSSQL Server 的步骤)。

    我是这样工作的:

    1. 按照 Lea Tano 指南安装 SQLSRV 5.6(或 5.3 或..)
    2. 下载并安装OBDC Driver 11 (msodbcsql.msi)
    3. 下载并安装SQL Server Native Client(sqlncli.msi 文件)
    4. 检查是否安装(如果没有,下载安装)Visual C++ Redistributable VS2012 Update4(vcredist_x86.exe)

    【讨论】:

      【解决方案4】:
      1. 下载Microsoft Drivers for PHP for SQL Server Windows (Link),下载后打开文件会是一个zip文件
      2. 将下载的文件解压到默认的PHP扩展目录(一般是c:\php\ext, c:\xampp\php\ext)
      3. 要启用 SQLSRV 驱动程序,请修改 php.ini,将以下行添加到扩展部分。你的 PHP 版本和扩展/dll 版本应该匹配你可以参考下图。根据需要更改文件名:

      extension=php_sqlsrv_80_ts.dll

      1. 要启用 PDO_SQLSRV 驱动程序,PHP 数据对象 (PDO) 扩展必须可用,可以是内置扩展,也可以是动态加载的扩展。

      extension=php_pdo_sqlsrv_80_ts.dll

      1. 重新启动 Web 服务器。

      请阅读MS文档Loading the Microsoft Drivers for PHP for SQL Server了解详细步骤和更多信息

      注意:请记住加载与 PHP 对应的驱动程序版本 版本参考下图

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • 好的,让我编辑答案
      猜你喜欢
      • 2016-08-01
      • 2014-03-27
      • 2016-09-19
      • 2016-07-02
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      相关资源
      最近更新 更多