【发布时间】:2012-03-01 20:51:06
【问题描述】:
我无法从我的 Codeigniter 应用程序连接到 Amazons RDS 服务。
数据库配置中的设置:
$db['default']['ssl_set'] = TRUE;
$db['default']['ssl_key'] = NULL;
$db['default']['ssl_cert'] = NULL;
$db['default']['ssl_ca'] = realpath('./application/third_party/mysql-ssl-ca-cert.pem');
$db['default']['ssl_capath'] = NULL;
$db['default']['ssl_cipher'] = NULL;
但是,当我连接时。我收到消息:
无法选择指定的数据库:暂存 文件名:...\system\database\DB_driver.php 行号:140
第 40 行显示在这里:
// Select the DB... assuming a database name is specified in the config file
if ($this->database != '')
{
if ( ! $this->db_select())
{
log_message('error', 'Unable to select database: '.$this->database);
if ($this->db_debug)
{
$this->display_error('db_unable_to_select', $this->database); // LINE 140
}
return FALSE;
}
我创建了following changes 以让mysqli 使用 SSL:
我很惊讶它连接成功,因为它抱怨数据库选择。不知道从这里去哪里?
我在 Windows 机器上使用 PHP 5.3.8。
更新
这更像是一个错误,而不是我的实现问题。如果我将$db['default']['db_debug'] 设置为false。我不再遇到这个问题了。但是,我收到了一堆警告:
Severity: Warning
Message: mysqli_real_escape_string() [function.mysqli-real-escape-string]: invalid object or resource mysqli
Filename: mysqli/mysqli_driver.php
Line Number: 346
这意味着通过 SSL 与数据库的连接不成功。
更新 2
我正在使用 XAMPP。
我正在使用 Codeingiter 2.0.2。
更新 3
我的数据库配置文件:
$db['default']['hostname'] = 'xxxx.us-east-1.rds.amazonaws.com';
$db['default']['username'] = 'xxxxx';
$db['default']['password'] = 'xxxx';
$db['default']['database'] = 'xxxx';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['port'] = 3306;
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = true;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
$db['default']['ssl_set'] = true;
$db['default']['ssl_key'] = NULL;
$db['default']['ssl_cert'] = NULL;
$db['default']['ssl_ca'] = realpath('./application/third_party/mysql-ssl-ca-cert.pem');
$db['default']['ssl_capath'] = NULL;
$db['default']['ssl_cipher'] = NULL;
【问题讨论】:
-
你能发布你的数据库配置设置吗?
-
也许这个能给你一些启发...codeigniter.com/forums/viewthread/102232
-
我读了那篇文章,那是我关注的。它应该像其他人一样工作,但对我来说有一些阻碍,不知道如何调试它!
-
你开启登录了吗?如果开启了,你能发布日志看看发生了什么吗?
-
在我发布的链接上,有配置行 mysqli_ssl_set($init, '/etc/ssl/mysql/client-key.pem', '/etc/ssl/mysql/client-cert .pem', '/etc/ssl/mysql/ca-cert.pem', NULL, NULL);这是 3 个键,但在您的配置中只有 mysql-ssl-ca-cert.pem....这是您需要查看的内容吗?
标签: php codeigniter ssl amazon-rds