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

问题描述 投票:30回答:5

我遇到过很多关于同一主题的帖子,但是我仍然无法解决,所以我问。我试图在我的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:尽管我在wamp服务器的bin文件夹中的sqlsrv文件中添加了phpinfo(),但是当我运行extension=php_sqlsrv_54_ts.dll时,我根本看不到php.ini部分。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9XQWNrVC5wbmcifQ==” alt =“在此处输入图像描述”>

php sql-server wamp
5个回答
14
投票

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

  • 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日历核心[...]声压级sqlsrv标准[...]

phpinfo()


11
投票

This帮助我找到了答案。在我的案例中,有两个php.ini文件用于清洗。一个在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

4
投票

如果使用的是Microsoft驱动程序3.1、3.0和2.0。请检查您的PHP版本已随IIS安装。使用此脚本检查php版本:

<?php echo phpinfo(); ?>

如果使用Web平台安装程序安装了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服务器

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS80cmlhWi5wbmcifQ==” alt =“在此处输入图像描述”>

如果此方法无效,请更改php版本并尝试运行您的php脚本。“在此处输入图像描述”

提示:将php version调低以尝试了解发生了什么,然后您可以下载相关的驱动程序。


1
投票

首先检查扩展名是否正确加载到phpinfo();中(应该出现sqlsrv之类的东西)。如果不是,则扩展名未正确加载。您还需要在安装扩展程序后重新启动apache。


0
投票

我也有这个,因为在Apache PHPIniDir D:/wamp/bin/php/php5.5.12的httpd.conf中不正确

© www.soinside.com 2019 - 2024. All rights reserved.