阿里云

CI框架动态更改配置文件

最近在使用CI框架开发一款DJ平台,主要是个人喜好,结合七牛云存储,将七牛云存储部分配置写入config目录下,在写入配置时遇到诸多问题,现将其记录下来。

前言:CI框架在一年前使用过,最近没有用他做过相应的开发,部分功能都已经忘记了,简单的看了看手册,同时最近想做一个DJ的平台,平台地址:dj.shenlin.ink,暂时处于开发中,待完成后会写一篇文章记录一下。

5369e386838aa3bd39e89e166cd2eeee.jpg

在平台设置中有一项名为“配置设置”,主要是用于设置七牛云存储的相关参数。主要有四个参数,并不想存数据库,有两个方面:数据量小、不方便(针对非开发人员),想将其写入配置文件中,在仔细查看了CI框架中的配置类后,本想使用set_items进行设置,后来发现此设置只是将配置写入内存中,并未更新到配置文件中。便换了一个写法。


首先,在配置文件目录config中新建一个配置文件(名称自定义即可)sevenOxen.php,用户储存配置参数。

<?php
/**
 * 七牛云存储配置
 */
 
$config['ak']     = '140';  //AccessKey
$config['sk']     = '240';  //SecretKey
$config['bucket'] = '350';  //存储空间名称
$config['domain'] = '450';  //域名


在控制器层读取配置,代码如下:

$this->config->load('sevenOxen');
$data['ak']     = $this->config->item('ak');
$data['sk']     = $this->config->item('sk');
$data['bucket'] = $this->config->item('bucket');
$data['domain'] = $this->config->item('domain');


在视图层修改配置并提交,代码略。

在控制器接收配置,并修改,代码如下:

    /**
     * 保存配置
     * @author 申霖
     * @time 2019/8/26 0026 下午 10:34
     */
    public function data()
    {
        $ak     = $this->input->post("ak");
        $sk     = $this->input->post("sk");
        $bucket = $this->input->post("bucket");
        $domain = $this->input->post("domain");
        $config = array(
            'ak'     => '$config[\'ak\']',
            'sk'     => '$config[\'sk\']',
            'bucket' => '$config[\'bucket\']',
            'domain' => '$config[\'domain\']'
        );
        //修改文件
        $str = <<<php
<?php
/**
 * 七牛云存储配置
 */
 
{$config['ak']}     = '$ak'; //AccessKey
{$config['sk']}     = '$sk'; //SecretKey
{$config['bucket']} = '$bucket'; //存储空间名称
{$config['domain']} = '$domain'; //域名
php;

        file_put_contents('./application/config/sevenOxen.php', $str);
        $data['code'] = 200;
        $data['msg']  = '保存成功';
        echo json_encode($data);
    }


主要注意如下几点:

1、set_items动态设置配置没好用;

2、使用定界符时里面的变量需要使用  {}  包含起来;

3、需要做相应的代码转义,以代码配置文件代码效果;

喜欢就点个赞吧