2010-10-13 77 views
2

這是我第一次在cakephp中使用ms sql。通常我使用mysql。我已經編輯我的database.php中的文件:CakePHP:嘗試使用mssql數據源時出錯

class DATABASE_CONFIG { 

var $default = array(
    'driver' => 'mssql', 
    'persistent' => false, 
    'host' => 'jura', 
    'login' => 'sa', 
    'password' => '********', 
    'database' => 'clientportal', 
    'prefix' => '', 
); 

var $test = array(
    'driver' => 'mssql', 
    'persistent' => false, 
    'host' => 'jura', 
    'login' => 'sa', 
    'password' => '********', 
    'database' => 'clientportal', 
    'prefix' => '', 
); 
} 

然而,當我查看索引頁面我得到這個錯誤:

PHP SQL Server interface is not installed, cannot continue. For troubleshooting information, see http://php.net/mssql/ 

Fatal error: Call to undefined function mssql_min_message_severity() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\clientportaladmin\cake\libs\model\datasources\dbo\dbo_mssql.php on line 123 

它從這個構造函數來在dbo_mssql.php文件:

function __construct($config, $autoConnect = true) { 
    if ($autoConnect) { 
     if (!function_exists('mssql_min_message_severity')) { 
      trigger_error(__("PHP SQL Server interface is not installed, cannot continue. For troubleshooting information, see http://php.net/mssql/", true), E_USER_WARNING); 
     } 
     mssql_min_message_severity(15); 
     mssql_min_error_severity(2); 
    } 
    return parent::__construct($config, $autoConnect); 
} 

我在PHP ini文件的擴展名MSSQL

extension=php_mssql.dll 

我一直在我的設置廣泛使用PHP的mssql數據庫,但我想知道是否因爲我的php目錄中的ini文件是php.ini文件被稱爲php.ini-開發和php.ini生產,但我實際上使用一個坐在C的根上的php.ini文件:

有沒有人需要處理這個問題?或者任何人知道我需要做什麼?使用W7 btw。

Jonesy

+0

你有什麼版本的PHP? – Dezigo 2010-10-13 08:27:33

+0

我正在使用php版本5.3.3 – iamjonesy 2010-10-13 08:38:22

+0

您正在使用哪個版本的CakePHP? – icc97 2013-08-08 12:20:01

回答

1

你不能老是使用延長= php_mssql.dll在PHP 5.3 *版本。
您需要使用MSSQL的驅動程序爲PHP
MSSQL driver


打開php.ini,剛剛加入這一行
延長= php_sqlsrv_53_ts_vc9.dll

+0

對不起,我也有這個擴展,但仍然是相同的錯誤 – iamjonesy 2010-10-13 11:46:23

0

什麼是你正在使用CakePHP的版本?

另一件事,請查看http://localhost/phpinfo.php的擴展名。

您應該找到服務器啓用和查看的擴展。

-1

我得到了同樣的錯誤使用遷移插件在服務器上:

http://cakedc.com/eng/pierre_martin/2010/02/05/cakephp-migrations-plugin-easily-version-and-deploy-whole-applications

它本地工作,而網站本身可以訪問MS SQL數據庫沒有問題。這只是命令行Cake遷移命令,給出了這個錯誤。我幾乎堅持任何PHP配置在服務器上。使用這個插件真的很方便,但我不確定從哪裏開始尋找或調整來追蹤這個插件,但我不知道它是否是相同的基礎問題?

+0

這實際上不是一個答案 - 這應該是一個評論 – icc97 2013-08-08 12:22:05

1

根據您的PHP版本使用適當的擴展文件,無論其線程安全與否,Visual C++的版本是用來構建PHP安裝的。

php_sqlsrv_53_ts_vc9.dll:例如,此驅動程序用於PHP 5.3版本,它是線程安全的並使用Visual C++ 9構建,您還應該確保在php安裝目錄中有適當的php.dll,如php5ts.dll用於線程安全版本的PHP 5.xx

1

我正在使用CakePHP的SQLSRV驅動程序和相應的dbo_sqlsrv.php數據源。

的DATABASE_CONFIG看起來像這樣

var $default = array(
    'driver' => 'sqlsrv', 
    'connect' => 'sqlsrv', 
    'persistent' => false, 
    'host' => 'tcp:NAUFRAGADOS', 
    'login' => 'sa', 
    'password' => '********', 
    'database' => 'geotest', 
    'prefix' => 'cake_', 
); 

通知 'TCP:' 在主機定義。這是我絆倒了,直到我得到它的權利

+0

tcp實際上不應該是必需的。我已經在本地連接到SQL Server(''host'=>'localhost'),並且通過遠程主機連接到SQL Server,並且都不需要tcp。 – icc97 2013-08-08 12:19:35

0

你有問題是在兩個部分。首先,其他人指出你使用的PHP 5.3沒有mssql PHP擴展。您需要使用Sqlsrv驅動程序,更新php.ini文件並測試可以使用sqlsrv驅動程序連接到SQL Server。

第二個問題是讓CakePHP使用sqlsrv驅動程序。根據CakePHP版本,您可能需要安裝單獨的sqlsrv數據庫驅動程序。我仍然在使用CakePHP 1.2,我相信在CakePHP 1.3中,您還需要單獨安裝sqlsrv數據庫驅動程序。我不知道他們是否已經在CakePHP 2中包含了sqlsrv驅動程序。

有一個CakePHP v1.3+ data sources其官方來源,其中包括一個sqlsrv data source