0

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

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

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

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

4

1 回答 1

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);
}      
于 2013-06-19T13:32:34.730 回答