首頁 >後端開發 >PHP問題 >php連線mssql失敗怎麼辦

php連線mssql失敗怎麼辦

藏色散人
藏色散人原創
2021-12-31 10:04:142279瀏覽

php連接mssql失敗的解決方法:1.在php.ini檔案中找到extension=php_mssql.dll並去掉前面的分號;2、把php_mssql.dll檔案複製到「c:/windows/ system32/”目錄下;3、重啟iis。

php連線mssql失敗怎麼辦

本文操作環境:windows7系統、PHP5版、DELL G3電腦

php連線mssql失敗怎麼辦?

關於PHP無法連接MSSQL資料庫的解決方法:

php 資料庫sql server extension sqlserver 伺服器

今天接到一個問題要php5 iis6 mysql5的平台環境上存取sqlserver2000的數據,結果運行時發現php連接遠端mssql資料庫出錯,出錯程式碼如下:

Warning: mssql_connect(): Unable to connect to server:

想想以前都是沒問題的,怎麼回事呢?後來去網上搜索,發現一篇文章,才發現原來伺服器是需要安裝mssql才能用php連接mssql的,本來新伺服器上我是不需要用到mssql的,但是現在沒辦法了,只能把擴充了,擴充了mssql之後就沒問題了。

擴充方法:

1、在c:/windows/php.ini檔案中找到

;extension=php_mssql.dll 把前面的分號去掉  

#找到

;extension_dir   =   "./" 將擴充庫目錄改為php的函式庫目錄如:extension_dir   = "c:/php/ext"

 

2、把php_mssql.dll檔案複製到c:/windows/system32/目錄下

3、重啟iis。

下面是找到的一篇文章。

php設定:

在php.ini檔案裡設定如下,找到  

;extension=php_mssql.dll   把前面的分號去掉  

#找到

#找到extension_dir   =   d:/extension/  

你的php.ini裡面可能不是d:/extension/  

#改為在php安裝目錄下面的extensions目錄下面的php_mssql.dll,所在的所在的路徑,如果你沒有把它移到其他地方(假設你的php安裝路徑是d:/php)  

就改成extension_dir=d:/php/extensions/  

然後重新啟動web伺服器

這一點很容易做到,但是做完這樣的設定後還是連不上,錯誤的資訊如下:

MS SQL Server 資料庫連線錯誤!請檢查資料庫主機變數設定是否正確!!!

而主機的變數設定我是一遍一遍的檢查,那些設定是一點問題都沒有的,翻遍網頁,找到了下面的這點蛛絲馬跡:

php.com资料:
I am trying to connect to SQL Server 2000 from PHP
I bumped to following warning:
Warning: mssql_connect(): Unable to connect to server: SERVER/Portal
....... on line 5
on line 5 there is:
$db_connect = mssql_connect('SERVER/Portal', 'sa', 'my_passwd');
I did the following
1.enabled php_mssql.dll extension in PHP.ini
2.every dll is in proper place(System32 or PHP folder),including ntwdblib.dll
I search lots of profile throught web ,but no one give me proper answer to resolve it.
after a few hour ,I found the problem was caused by
ntwdblib.dll ,which version is 7.00.839 ,when I replaced old ntwdblib.dll with the new
ntwdblib.dll ,which version is 8.00.194 ,all problem are solved.
We had some, read A LOT, of problems with MSSQL under Windows 2003.
We had 2 the same windows, php, php-ini, everything machines but only one could connect.
Unable to connect was the error message.
Finnaly we checked the version of ntwdblib.dll and the one distributed with PHP was 7.00....
and the version of the one on the SQL Server install was 8.00.... so we copied this one in
the php and apache dir and it worked.

問題就這樣被找到了,惹禍的是它ntwdblib.dll

ntwdblib.dll的主要作用是提供sql server連線服務。

我用的php版本是5.25,在安裝它的服器的windows/system32/ 下我查到ntwdblib.dll檔案的版本是2000.2.8.0 ,這個版本支援的是sql server 7.0, 因為安裝PHP時會把dlls下面的所有檔案覆蓋到系統

目錄下,所以當我用它去連接sql server 2000 的時候當然會是無法連線了。

後來我在一台正常安裝sql server 2000 的伺服器上查到ntwdblib.dll的版本是2000.80.2039.0,我把這個檔案拷過去,覆蓋掉以前的版本,重啟伺服器後,一切正常。

補充:如果資料庫名稱的開頭是數字時也會提示無法打開,這時要做的很簡單,把資料庫的名字用中括號[ ] 括起來就搞定了,如123bbs 改寫成[ 123bbs]就沒有問題了,另外如果你的資料庫名字與sql server中的保留字衝突的話也會出現這種情況,用中括號的方法一樣可以解決。

最終,PHP無法正確連接sql server 2000的問題終於解決了,雖然耗費大半天的時間,但收穫還是很大的,現在把它貼出來,也讓遇到同樣問題的兄弟們少走一些彎路。

最後,如果您的目標MSSQL電腦裝有防火牆,請開放1433端口,windows xp系統更是如此!

看了以上資料讓裝sqlserver2000的朋友傳「ntwdblib.dll 」檔案我,自己本地測試果然成功,但把上傳到伺服器上,結果info()沒有mssql擴充了,本來已經載入的怎麼就沒有了,把php.ini檔案和本地比較基本上沒有差別,就是擴充不了,本地一切正常。

最後發現還是「ntwdblib.dll 」的版本問題,找到個更高的「ntwdblib.dll 」版本替換。 ######推薦學習:《###PHP影片教學###》###

以上是php連線mssql失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn