Abs*_*Abs 6 php ssl codeigniter amazon-rds
我无法从我的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;
Run Code Online (Sandbox Code Playgroud)
但是,当我连接.我收到消息:
无法选择指定的数据库:暂存文件名:...\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;
}
Run Code Online (Sandbox Code Playgroud)
我进行了以下更改以mysqli使用SSL:
我很惊讶它连接成功,因为它抱怨数据库选择.不知道从哪里去?
我在5.3.8Windows机器上使用PHP .
这变成了一个bug而不是我的实现问题.如果我设置$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
Run Code Online (Sandbox Code Playgroud)
这意味着通过SSL连接数据库失败.
我正在使用XAMPP.
我正在使用Codeingiter 2.0.2.
我的数据库配置文件:
$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;
Run Code Online (Sandbox Code Playgroud)
$db['default']['port'] = 3306;
Run Code Online (Sandbox Code Playgroud)
尝试将其添加到db config.mysql_real_connect()期望param 6是LONG int; 空字符串.
DB_Driver中第140行下面的函数是dbcollat和charset的设置位置.那些将在驱动程序中命中real_escape,如果不正确则导致escape_error.
尝试
$db['default']['dbcollat']='';
Run Code Online (Sandbox Code Playgroud)
或者,检查数据库的编码是否已根据db config中的内容进行设置.即如果您的db charset是latin1并且您使用的是utf-8,则conn_id将是错误的并且mysqli_escape将会阻止.
| 归档时间: |
|
| 查看次数: |
6793 次 |
| 最近记录: |