CakePHP: ошибка при попытке использовать источник данных mssql - PullRequest
2 голосов
/ 13 октября 2010

Я впервые использую ms sql с cakephp. Обычно я использую 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);
}

У меня есть расширение mssql в файле php ini

extension=php_mssql.dll

Я часто использую базы данных mssql с PHP на своей установке, но мне интересно, так ли это, потому что ini-файл в моем каталоге php - это файл php.ini, называется php.ini-development и php.ini-production, но я на самом деле используйте файл php.ini, расположенный в корне C:

Кто-нибудь имел дело с этим раньше? Или кто-нибудь знает, что мне нужно делать? Используя W7 между прочим.

Джоунси

Ответы [ 6 ]

1 голос
/ 30 августа 2011

Я использую драйверы SQLSRV и соответствующий источник данных dbo_sqlsrv.php для CakePHP.

DATABASE_CONFIG выглядит следующим образом

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

замечает 'tcp:' в определении хоста,Это было то, о чем я споткнулся, пока я не понял это правильно

1 голос
/ 30 июля 2011

используйте правильные файлы расширений в зависимости от вашей версии PHP, независимо от того, является ли он потокобезопасным или нет, какой была версия Visual C ++ для сборки вашей установки PHP.

php_sqlsrv_53_ts_vc9.dll: например, этот драйвер дляPHP версии 5.3, которая является поточно-ориентированной и построена с использованием Visual C ++ 9, вы также должны убедиться, что у вас есть правильный php.dll в установочном каталоге php, например php5ts.dll для поточно-безопасной версии PHP 5.xx

1 голос
/ 13 октября 2010

Вы не можете использовать extension = php_mssql.dll в версиях php 5.3 *.
Вам нужно использовать драйвер MSSQL для php
Драйвер MSSQL


Откройте php.ini, просто добавьте эту строку
расширение = php_sqlsrv_53_ts_vc9.dll

0 голосов
/ 08 августа 2013

Ваша проблема состоит из двух частей.Во-первых, как уже отмечали другие, вы используете PHP 5.3, который не имеет расширения mssql PHP.Вам необходимо использовать драйверы Sqlsrv, обновить файл php.ini и проверить, что вы можете подключиться к SQL Server с помощью драйверов sqlsrv.

Вторая проблема, с которой вы столкнулись, - это заставить CakePHP использовать драйверы sqlsrv.В зависимости от версии CakePHP вам может потребоваться установить отдельный драйвер базы данных sqlsrv.Я все еще использую CakePHP 1.2, и я уверен, что также в CakePHP 1.3 вам нужно установить драйверы базы данных sqlsrv отдельно.Я не знаю, включили ли они драйверы sqlsrv в CakePHP 2.

Официальный источник для CakePHP v1.3 + источников данных включает данные sqlsrvисточник .

0 голосов
/ 07 февраля 2011

Я получаю ту же ошибку на сервере с помощью плагина миграции:

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

он работает локально, и сам сайт может без проблем получить доступ к БД MS SQL.Это просто команды миграции командной строки торт, которые дают эту ошибку.Я в значительной степени застрял с любой конфигурацией PHP на сервере.Было бы очень удобно использовать этот плагин, но я не уверен, с чего начать или настроить, чтобы отследить это, но мне интересно, если это та же самая основная проблема?

0 голосов
/ 27 октября 2010

Какую версию CakePHP вы используете?

Еще одна вещь, пожалуйста, проверьте расширение на http://localhost/phpinfo.php.

Вы должны найти расширения, которые включены и видны на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...