致命错误:调用未定义的函数sqlsrv_connect()

时间:2014-02-25 13:06:54

标签: php sql-server wamp

我在相同的主题问题上遇到了不少帖子,但是我仍然无法解决它,所以我问。我想在我的php脚本中连接到sql。我的连接字符串是:

/* Specify the server and connection string attributes. */
$serverName = "xxx-PC\SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
      die(print_r(sqlsrv_errors(), true));
}

我已在wamp文件夹下的php.ini文件中安装并包含以下内容:C:\wamp\bin\php\php5.4.16

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll

我的wampserver运行良好,wampapachewampsqld服务也正常运行。我能够成功执行php.exe。但是,我无法建立与数据库所在的SQL Server 2008 R2的连接。请帮忙!

编辑1:当我尝试连接到SQL Server 2008 R2时,wamp服务器正在运行wampmysql服务。这可能是原因吗?我应该使用MySQL代替SQL吗?有什么指针吗?

编辑2:当我运行sqlsrv时,我根本没有看到phpinfo()部分虽然我已在位于该文件夹的bin文件夹中的extension=php_sqlsrv_54_ts.dll文件中添加了php.ini wamp服务器。

enter image description here

6 个答案:

答案 0 :(得分:10)

安装第三方扩展时,需要确保所有编译参数都匹配:

  • PHP版
  • 架构(32/64位)
  • 编译器(VC9,VC10,VC11 ......)
  • 线程安全

常见故障包括:

  • 编辑错误的php.ini文件(这是典型的捆绑包);正确的路径显示在phpinfo()
  • 忘记重启Apache。
  • 无法看到启动错误;那些应该出现在Apache日志中,但您也可以使用命令行来诊断它,例如:

    php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Path\To\php.ini" -m
    

如果一切正常,您应该在命令输出中看到sqlsrv和/或phpinfo()(取决于您正在配置的SAPI):

  

[PHP模块]
  bcmath时
  日历
  核心
   [...]
  SPL
  的 SQLSRV
  标准
   [...]

phpinfo()

答案 1 :(得分:10)

This帮助我找到答案。在我的例子中,有两个php.ini文件位于wamp中。一个在php文件夹下,另一个在C:\wamp\bin\apache\Apachex.x.x\bin文件夹中。通过sqlsrv_connect函数连接到SQL时,我们指的是php.ini文件夹中的apache文件。将以下内容(根据您的版本)添加到此文件中:

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll

答案 2 :(得分:3)

如果您使用的是 Microsoft Drivers 3.1,3.0和2.0 。 请检查已安装IIS的PHP版本
使用此脚本检查php版本:

<?php echo phpinfo(); ?>

OR

如果您使用网络平台安装程序安装了PHP Manager in IIS,则可以从中检查版本。

然后:
 如果您使用的是新的PHP版本(5.6),请下载Drivers from here

对于低于5.6的PHP版本 - 请下载Drivers from here

  • PHP驱动程序版本3.1需要PHP 5.4.32或PHP 5.5.16或更高版本。
  • PHP驱动程序版本3.0需要PHP 5.3.0或更高版本。如果可能,请使用 PHP 5.3.6或更高版本。
  • PHP驱动程序版本2.0驱动程序适用于PHP 5.2.4或更高版本,但不适用 用PHP 5.4。如果可能,请使用PHP 5.2.13或更高版本。

然后使用PHP管理器将下载的驱动程序添加到php config文件中。您可以按如下所示进行操作(浏览文件并按OK)。 然后重新启动IIS服务器

enter image description here

如果此方法不起作用,请更改 php版本并尝试运行您的php脚本。 enter image description here 要将php version更改为降低并尝试了解发生了什么。然后您可以下载相关驱动程序,以便执行上述步骤。

答案 3 :(得分:0)

首先检查phpinfo();中是否正确加载了扩展程序(应显示sqlsrv之类的内容)。如果没有,则扩展未正确加载。您还需要在安装扩展程序后重新启动apache。

答案 4 :(得分:0)

我有同样的想法,因为在apache PHPIniDir D:/wamp/bin/php/php5.5.12的httpd.conf中这是不正确的

答案 5 :(得分:0)

pdo_sqlsrv 中搜索 sqlsrv 扩展。