PHP IIS7 MSSQL调用未定义的函数sqlsrv_connect
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP IIS7 MSSQL调用未定义的函数sqlsrv_connect相关的知识,希望对你有一定的参考价值。
我有MSSQL Server 2008,MS WINDOWS SERVER 2008 RC2和php 5.4
php.info有行
[PHP_PDO_SQLSRV_54_NTS]
extension=php_pdo_sqlsrv_54_nts.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_SYBASE_CT]
extension=php_sybase_ct.dll
[PHP_SQLSRV_54_NTS]
extension=php_sqlsrv_54_nts.dll
在这里找到的PHP信息http://89.111.180.28/index.php
我看到扩展php.ini行,但我没有在php.info中看到扩展名为SQLSRV的行...
连接到MSSQL SERVER我使用脚本
$conn_array = array (
"UID" => "user",
"PWD" => "passw",
"Database" => "database",
"Encrypt" => 1,
"TrustServerCertificate" => 1) ;
$conn2 = sqlsrv_connect('localhost' , $conn_array);
if ($conn2)
{
echo 'MSSQL Connection successful';
}
else
{
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_close( $conn2 );
但我看到错误:
Fatal error: Call to undefined function sqlsrv_connect() in C:inetpubwwwroot89.111.180.28index.php on line 18
告诉我,为什么我有错误,怎么做对了?
p.s。:服务器已经重启了。
我自己就是这个问题。我终于修好了,所以我想我会分享。
问题是,虽然我安装了sqlsrv dll(复制到我的php / ext文件夹),并且我在php.ini中添加了它,在IIS中,它被“禁用”。
这里有一些分步说明,以防有人再次遇到同样的问题。 (或者为了我将来的参考:))
- Download (and install) the SQL Server drivers(.dll)
通过运行.exe安装它们,并在它询问您解压缩它们的位置时键入php扩展文件夹的路径。
要查找当前的扩展目录,请运行(cmd.exe)
php -i | more
,然后查找extension_dir
行。 (对我而言,这是more
的第四次报道)。或者,制作一个只包含<?php phpinfo(); ?>
的简单php文件,并在浏览器中运行它。这将提供相同的信息,但采用更易于阅读的格式。 - 将扩展名添加到php.ini中
要找到合适的php.ini,要么再次运行
php -i | more
,寻找Loaded Configuration File
,要么再次检查那个简单的PHP脚本(我强烈建议你做它 - 它会节省你的时间和精力)。您在那里找到的路径是您需要编辑的文件。 将以下行添加到php.ini中,并保存:[PHP_SQLSRV] extention=php_sqlsrv_56_nts.dll
- 在IIS管理器中启用扩展
在开始菜单中,键入
IIS Manager
,然后按Enter键。 单击左侧栏中的服务器名称 点击PHP Manager
在PHP Extensions
下,单击Enable or Disable an Extension
。 如果您的扩展名不在Enabled
下,请查看Disabled
下的内容。找到它后,右键单击它,然后在出现的上下文菜单中单击Enable
。 - 测试以确保它工作
打开你制作的
phpinfo()
页面(你做了,不是吗?),并查看Registered PHP Streams
。如果你在那个列表中看到sqlsrv
,你就定了!
你的答案肯定帮助我调试我的问题。对于可能已成功安装PHP PDO SQLSRV .dll模块但仍然得到相同错误的其他人,请添加回答此问题。
我花了差不多一个小时来解决这个问题,但即使我配置了PHP_PDO_SQLSRV之后,函数sqlsrv_connect()
仍然无效。
发现它是因为如果您使用PDO sqlsrv扩展,它有自己的库,具有单独的功能。
要连接到数据库,您可以执行以下操作:
$conn = new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");
你可以在这里查看所有这些:
http://msdn.microsoft.com/en-us/library/ff628159(v=sql.105).aspx
如果您不确定PDO和普通SQLSRV之间的区别,请参考这篇文章:
SQLSRV driver vs. PDO driver for PHP with MS SQL Server
我之所以选择PDO是因为我更喜欢将数据作为字符串返回(对我而言更快的访问而不是解析对象/类类型)。
我了解情况。
我使用的是5.4以上的PHP版本,所以使用PHP驱动程序用于Windows 3.0。
对于此配置,SQL 2012所需的客户端版本,但我一直是客户端SQL 2008版本
问题解决了。
以上是关于PHP IIS7 MSSQL调用未定义的函数sqlsrv_connect的主要内容,如果未能解决你的问题,请参考以下文章
PHP 5.4 到 7.4 mssql 到 sqlsrv sql 查询未运行