【问题标题】:PHP Fatal error: Call to undefined function mssql_connect()PHP 致命错误:调用未定义函数 mssql_connect()
【发布时间】:2025-12-05 03:40:02
【问题描述】:

我以前从未使用过 php,我正在尝试连接到运行 IIS7 和 PHP5.3 的 Windows 机器上的 SQL Server 2008 实例。

我已经从here 下载并安装了SQLSRV30.EXE C:\Program Files (x86)\PHP\ext 将此添加到C:\Program Files (x86)\PHP\php.ini

extension=php_sqlsrv_53_nts.dll

然后重新启动整个服务器。我的日志文件中仍然出现致命错误:

PHP Fatal error:  Call to undefined function mssql_connect()

我需要做什么才能从在 IIS7/Windows Server 2008 上运行的 PHP 5.3 连接到 Microsoft SQL Server 2008?我确定我错过了一些非常愚蠢的东西......

完整的 PHPINFO --> http://demo.mandibleweb.com/zapified/hello.php

phpinfo():

PHP Version 5.3.10





System 

Windows NT MWD001 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 



Build Date 

Feb 2 2012 20:10:58 



Compiler 

MSVC9 (Visual C++ 2008) 



Architecture 

x86 



Configure Command 

cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet" "--with-mcrypt=static" "--disable-static-analyze" 



Server API 

CGI/FastCGI 



Virtual Directory Support 

disabled 



Configuration File (php.ini) Path 

C:\Windows 



Loaded Configuration File 

C:\Program Files (x86)\PHP\php.ini 

【问题讨论】:

标签: php sql-server iis iis-7


【解决方案1】:

我刚刚尝试在我的开发服务器上安装该扩展。

首先,确保扩展程序已正确启用。您的 phpinfo() 输出似乎不完整。

如果确实安装正确,您的phpinfo() 应该有一个如下所示的部分:

如果您的phpinfo() 中没有该部分。确保您使用的是正确的版本。扩展有非线程安全和线程安全两种版本。

最后,检查您的extension_dir 设置。默认情况下是这样的:extension_dir = "ext",在大多数情况下它工作正常,但如果不尝试:extension_dir = "C:\PHP\ext"

================================================ ==============================

根据新信息编辑:

您使用了错误的功能。 mssql_connect()Mssql 扩展的一部分。你使用的是微软的扩展,所以使用sqlsrv_connect(),对于微软驱动的API,查看SQLSRV_Help.chm,当你解压扩展时,它应该被解压到你的ext目录。

【讨论】:

  • 抱歉,这是完整的phpinfo(),我确实有sqlsrv 部分
  • 是的,我正要说我在 phpinfo 中没有看到 mssql 部分。
  • 耶.. 我在 :),我必须下载 SQL Server 2012 Native Client microsoft.com/download/en/details.aspx?id=29065
  • 谢谢!在这篇文章打开灯泡之前,我一直在使用 mssql_connect()。我打开了 chm 并使用 sqlsrv_connect() 没有问题。谢谢!
【解决方案2】:

php.ini 可能需要阅读: extension=ext\php_sqlsrv_53_nts.dll

或者将文件移动到与 php 可执行文件相同的目录。这就是我本周对我的 php5 安装所做的,以使 odbc_pdo 正常工作。 :P

此外,这看起来不像正确的 phpinfo() 输出。如果您创建一个包含内容
<? phpinfo(); ?> 的文件并访问该页面,则 HTML 输出应显示几个部分,包括一个带有已加载模块的部分。 (编辑添加:如上面接受的答案的屏幕截图所示)

【讨论】:

【解决方案3】:

我用的是IIS和mysql(直接下载,不用wamp或者xampp) 我的 php 安装在 c:\php 我收到“调用未定义函数 mysql_connect()”的错误 对我来说,extension_dir 的改变起作用了。 这就是我所做的。 在php.ini中,原来我有这行

;在窗户上: extension_dir = "ext"

我改成:

;在窗户上: extension_dir = "C:\php\ext"

它奏效了。当然,我还做了其他事情,比如取消注释 dll 扩展等,正如其他评论中所解释的那样。

【讨论】: