2011-12-29 88 views
4

我正在開發一個要部署在運行IIS 7.5和PHP 5.3.8的64位Windows 2008 Server計算機上的Web項目。系統上的數據庫是Microsoft SQL Server 2008 R2。我正在開發CodeIgniter 2.1.0框架中的應用程序,並且我很難讓它連接到SQL Server。CodeIgniter MSSQL連接

我試過使用MSSQL,ODBC和SQLSRV數據庫驅動程序,並且遇到三個單獨的錯誤,爲每個不同的驅動程序。

這裏是我的ODBC配置:

$db['default']['hostname'] = 'SA'; 
$db['default']['username'] = 'petre'; 
$db['default']['password'] = 'start'; 
$db['default']['database'] = 'petre'; 
$db['default']['dbdriver'] = 'odbc'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ''; 
$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE; 
$db['default']['stricton'] = FALSE; 

我在數據源定義SA的DNS,我敢肯定的是,用戶名和密碼都是有效的,並且該服務器接受混合身份驗證(Windows + SQL身份驗證)。

我自動加載DB庫和任何網頁訪問我,我得到:

Unable to connect to your database server using the provided settings. 
Filename: C:\inetpub\wwwroot\system\database\DB_driver.php 
Line Number: 124 

如果我嘗試通過MSSQL連接,我只是得到了一個空白頁面,不管是什麼。

如果我嘗試使用SQLSRV使用以下PARAMS:

$db['default']['hostname'] = '127.0.0.1'; 
$db['default']['username'] = 'petre'; 
$db['default']['password'] = 'start'; 
$db['default']['database'] = 'petre'; 
$db['default']['dbdriver'] = 'sqlsrv'; 

即使我鏈接到php.ini中的SQLSRV DLL文件,我得到以下信息:

PHP Fatal error: Call to undefined function sqlsrv_connect() in C:\inetpub\wwwroot\system\database\drivers\sqlsrv\sqlsrv_driver.php on line 76 

我一直在閱讀舊帖子和不同的意見,但我還沒有解決這個問題。

我只是在尋找一個單一的數據庫驅動程序的解決方案 - 任何獲得它連接的罰款。有沒有人有解決這個問題的建議?

+1

您就可以使用PHP的內置功能,用於連接MSSQL或ODBC連接(從而笨了等式)? – Crontab 2011-12-29 15:11:47

+0

「如果我嘗試通過MSSQL連接,我只是得到一個空白頁面,不管是什麼」聽起來像一個致命/解析/類似的錯誤,請檢查您的PHP。ini以確保您將這些錯誤記錄在文件中,並將相關日誌行發佈到您的問題中 – Lepidosteus 2011-12-29 15:55:34

+1

@Crontab只要我嘗試瞭解決方案,就會發現問題是CodeIgniter的內置ODBC驅動程序,它在周圍添加了撇號表名。我通過odbc_driver.php快速瀏覽了一下,改變了引用表的方式並解決了問題! – 2012-01-10 13:42:45

回答

2

您顯示的SQLSRV驅動程序錯誤意味着該DLL永遠不會被加載。你的php_info()說什麼?

此外,您是否安裝了SQL Server Native Access Client(SNAC)10? SQLSRV驅動程序需要它。

+0

謝謝,那是解決問題的墊腳石。我發現問題是CodeIgniter內置的ODBC驅動程序,它在表名稱周圍添加了撇號。 – 2012-12-31 07:26:03

3

對於86勝下載http://www.microsoft.com/en-us/download/details.aspx?id=20098與使用:

<br/>$db['default']['dbdriver'] = 'sqlsrv'; 
<br/>use the php_sqlsrv_XX_ts_vcX.dll in php.ini extension 

,如果你的網絡服務器和數據庫服務器不能與您的應用程序在同一服務器上,安裝此:

http://go.microsoft.com/fwlink/?LinkID=188400&clcid=0x409 

linux as webserver:
$ db ['default'] ['dbdriver'] ='mssql';

download & install = php5-sybase + freetds 
<br/>edit /usr/local/etc/freetds.conf 
<br/>create pdo_dblib.so & php_mssql.so (if not allready exist on your extension dir), and apply to php.ini 

sudo /etc/init.d/apache2 restart 

,只是不要忘記允許連接到您的DB(默認端口爲MSSQL是1433)