2012-04-03 145 views
15

我从来没有使用过PHP,并试图连接到运行IIS7和PHP5.3的Windows计算机上的SQL Server 2008实例。PHP致命错误:调用未定义的函数mssql_connect()

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

extension=php_sqlsrv_53_nts.dll 

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

PHP Fatal error: Call to undefined function mssql_connect() 

什么我需要做的,从PHP 5.3连接到Microsoft SQL Server 2008的IIS7/Windows 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 
+0

我有类似的情况(没有MySQL块),我的解决方案是在这里:http://stackoverflow.com/questions/5179535/fatal-error-call-to-undefined-function-mysql-connect-in-c -apache-htdocs-test – 2013-09-18 12:09:14

回答

30

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

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

如果它确实是安装不当,phpinfo()应该有一个部分,看起来像这样: enter image description here

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

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

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

编辑给出新的信息:

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

+0

对不起,这里是完整的[phpinfo()](http:// demo.mandibleweb.com/zapified/hello.php),我确实有'sqlsrv'部分 – Greg 2012-04-03 04:04:21

+0

更新了我的答案:D – F21 2012-04-03 04:08:50

+0

是的,我刚才说我没有在phpinfo中看到mssql部分。 – 2012-04-03 04:09:55

1

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

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

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

+0

对不起,这里是完整的[phpinfo()](http://demo.mandibleweb.com/zapified/hello.php) – Greg 2012-04-03 04:05:58

0

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

;在Windows中: 的extension_dir = “分机”

我把它改为:

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

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

相关问题