安装期间更新代码igniter配置文件

时间:2013-06-19 12:09:29

标签: php codeigniter configuration installation

我知道这个问题被多次询问,但几乎所有答案都在说save in db$this->config->set_item

然而,这些答案并不适用于我。我不是在制作一个网站,而是一个开源项目,并为非技术人员制作安装脚本,这将在安装过程中为用户设置所有内容。为此,如果用户需要,我需要在安装过程中使用用户特定设置更新配置文件,然后再在表单管理面板中更新。

显然保存在DB中不适用,因为我甚至需要通过安装脚本在配置文件中编写DB凭据。 $this->config->set_item也不适用,因为它仅为当前会话设置,我想永久设置它。

现在我正在研究创建配置文件模板和更新变量的想法。这是实现要求的正确方法吗?这里再次出现另一个问题,如果用户从管理面板更改某些设置(比如数据库凭据),则不会立即反映更改。对此有没有解决方法或更好的解决方案?

1 个答案:

答案 0 :(得分:3)

您可以将配置文件作为常见文件(如* .txt)读取,然后解析并更改所需内容。例如,您想要更改用于连接数据库的用户名(我不检查此代码,这只是一个示例):

$out = '';
$pattern = '$db[\'default\'][\'username\']';
$newValue = 'root';
$fileName = "application/config/database.php";
if(file_exists($fileName)) {
    $file = fopen($fileName,'r+');
    while(!feof($file)) { 
        $line = fgets($file);
        if(strpos($line, $pattern) !== false){
            $out = $pattern . " = '". $newValue . "'";
        }else{
            $out = $line;
        }
    }
    file_put_contents($file, $out);
    fclose($file);
}