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