2012-04-03 111 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擴展等,正如其他評論中所解釋的那樣。

相關問題