我知道这个问题被多次询问,但几乎所有答案都在说save in db
或$this->config->set_item
。
然而,这些答案并不适用于我。我不是在制作一个网站,而是一个开源项目,并为非技术人员制作安装脚本,这将在安装过程中为用户设置所有内容。为此,如果用户需要,我需要在安装过程中使用用户特定设置更新配置文件,然后再在表单管理面板中更新。
显然保存在DB中不适用,因为我甚至需要通过安装脚本在配置文件中编写DB凭据。 $this->config->set_item
也不适用,因为它仅为当前会话设置,我想永久设置它。
现在我正在研究创建配置文件模板和更新变量的想法。这是实现要求的正确方法吗?这里再次出现另一个问题,如果用户从管理面板更改某些设置(比如数据库凭据),则不会立即反映更改。对此有没有解决方法或更好的解决方案?
答案 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);
}