2010-10-13 60 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