CI app文件夹外的sqlite数据库

时间:2017-12-17 17:56:58

标签: php sqlite codeigniter-3

我正在尝试使用codeigniter中的1个sqlite数据库构建一个多Web应用程序,我想将sqlite数据库放在应用程序文件夹之外。我进入了我的sqlite数据库目录,但它不起作用。

$db['default'] = array(
    'dsn'   => 'sqlite:' . '/public_html/database/masterDB.sqlite',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

2 个答案:

答案 0 :(得分:1)

看起来你刚刚和你的小朋友打错了。 。 '但假设情况并非如此......

你的"路径"相对于您的文档根目录。

您的Codeigniter通过文档根目录中的index.php运行。 因此,如果您将数据库文件夹放在与文档根目录相同的级别,那么您将拥有。

/where/is/my/app/public_html/                            <<< Document Root
                             index.php
                             application/ 
                             database/masterDB.sqlite

因此,您的数据库文件夹与index.php处于同一级别,使用./表示法意思在同一级别(而../表示级别)。

你的

之路
'dsn'   => 'sqlite:' . '/public_html/database/masterDB.sqlite',

正在寻找/where/is/my/app/public_html/public_html/database/masterDB.sqlite ,它不存在

所以你想要

'dsn'   => 'sqlite:./database/masterDB.sqlite',

答案 1 :(得分:0)

有可能。

$db['second'] = array(
    'dsn'      => '',
    'hostname' => '',
    'username' => '',
    'password' => '',
    'database' =>  '.././db/data.db' ,
    'dbdriver' => 'sqlite3',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt'  => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我的Linux根目录是

/ var / www / html / ci / applications

我的sqlitedb位于

/var/www/html/db/data.db文件夹

它工作正常。

经测试可正常工作