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

我从来没有使用过PHP,并试图连接到运行IIS7和PHP5.3的Windows机器上的SQL Server 2008实例。

我已经从C:\Program Files (x86)\PHP\ext下载并安装了SQLSRV30.EXE ,将它添加到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需要做什么? 我确定这是一个真正的愚蠢,我错过了…

FULL 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 

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

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

如果确实安装正确,你的phpinfo()应该有一个如下所示的部分: 在这里输入图像描述

如果你没有在你的phpinfo()获得该部分。 确保你使用的是正确的版本。 有扩展的非线程安全和线程安全的版本。

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

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

编辑给出新的信息:

您正在使用错误的function。 mssql_connect()是Mssql扩展的一部分。 您正在使用Microsoft的扩展名,因此使用sqlsrv_connect()作为Microsoft驱动程序的API,请查看SQLSRV_Help.chm ,在SQLSRV_Help.chm压缩扩展时应将其提取到ext目录。

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

或者将文件移动到与php可执行文件相同的目录中。 这是我在本周做了php5安装以获得odbc_pdo的工作。 :P

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

我正在使用IIS和MySQL(直接下载,没有wamp或xampp)我的PHP安装在c:\ php我得到的错误“调用未定义的函数mysql_connect()”对我来说,extension_dir的变化工作。 这就是我所做的。 在php.ini中,本来我有这条线

; 在Windows上:extension_dir =“ext”

我把它改成:

; 在Windows上:extension_dir =“C:\ php \ ext”

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