CakePHP:尝试使用mssql数据源时出错

时间:2010-10-13 07:52:47

标签: php sql-server cakephp

这是我第一次使用带有cakephp的ms sql。通常我使用mysql。我编辑了我的database.php文件:

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-development和php.ini-production但我实际上使用位于C:

根目录下的php.ini文件

以前有人不得不处理这件事吗?或者任何人都知道我需要做什么?使用W7 btw。

Jonesy

6 个答案:

答案 0 :(得分:1)

你不能在php 5.3 *版本中使用 extension = php_mssql.dll
您需要为php使用MSSQL驱动程序MSSQL driver


打开php.ini,只需添加此行
延长= php_sqlsrv_53_ts_vc9.dll

答案 1 :(得分:1)

使用适当的扩展文件,具体取决于您的PHP版本,无论其线程是否安全,构建PHP安装的Visual C ++版本是什么。

php_sqlsrv_53_ts_vc9.dll:例如这个驱动程序适用于PHP版本5.3,它是线程安全的并使用Visual C ++ 9构建,你还应该确保你在php安装目录中有正确的php.dll,如php5ts.dll,用于线程安全版本PHP 5.xx

答案 2 :(得分:1)

我正在使用SQLSRV驱动程序和CakePHP的相应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:'。这就是我正在绊倒的事情,直到我做对了

答案 3 :(得分:0)

您正在使用的CakePHP版本是什么?

另外,请检查http://localhost/phpinfo.php处的扩展程序。

您应该找到服务器启用和查看的扩展程序。

答案 4 :(得分: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

答案 5 :(得分:-1)

我在使用迁移插件的服务器上遇到同样的错误:

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

它在本地工作,并且站点本身可以​​毫无问题地访问MS SQL DB。这只是命令行蛋糕迁移命令,它会产生此错误。我几乎坚持服务器上的PHP配置。使用这个插件真的很方便,但是我不知道从哪里开始寻找或调整来追踪它,但我想知道它是否是同样的根本问题?