【问题标题】:Update code igniter config file during installation在安装期间更新代码点火器配置文件
【发布时间】:2013-06-19 12:09:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php codeigniter configuration installation


    【解决方案1】:

    您可以将配置文件作为通用文件(如 *.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);
    }      
    

    【讨论】:

    • 感谢@ToxaBes 的回复。这将解决安装过程中的问题,因为安装脚本将是一个简单的 PHP 文件并且不依赖于 CI。但是,您能对第二部分提出任何想法吗?如何从基本上是 CI 控制器的管理面板更改配置值?如果我应用相同的逻辑,新值不会立即反映在 CI 中?
    • 是的,如果您想从管理面板更改它,您可以使用相同的逻辑。为了立即应用更改,您可以将 index.php 中的 ENVIRONMENT 选项设置为“开发”(~第 21 行)。这意味着不会使用缓存。如果您使用其他缓存机制,您可以在更改配置后清除缓存,如下所示:ellislab.com/codeigniter/user-guide/libraries/caching.html
    • 请注意,如果您使用 PDO 进行 DB 连接并更改数据库配置文件,您应该关闭并打开新的 PDO 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多