thinkphp 3.2.3 的C()方法能修改配置文件,但是是动态修改的,没有真正的更改文件。
我查了网上网友分享的方法,都不怎么合适,我就自己摸索写了一个,配置写到text.php中,我的目录如下:
代码写到IndexController.class.php的index方法中的(是默认的控制器),代码如下:
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ //文件路径地址 $path = 'Application/'.MODULE_NAME .'/Conf/text.php'; //thinkphp的配置文件是数组 //读取配置文件, $file = include $path; //这里获取用户提交上来的配置文件 ,例如 'WEB_NAME' => I('web_name'), 我测试用的静态设置 $config = array( 'WEB_NAME' => 'T博客', 'WEB_AGE' => '2333', 'WEB_TITLE' => '博客管理系统' ); //合并数组,相同键名,后面的值会覆盖原来的值 $res = array_merge($file, $config); //数组循环,拼接成php文件 $str = '<?php return array('; foreach ($res as $key => $value){ // '\'' 单引号转义 $str .= '\''.$key.'\''.'=>'.'\''.$value.'\''.','; }; $str .= '); ?>'; //写入文件中,更新配置文件 if(file_put_contents($path, $str)){ echo '保存成功!'; }else { echo '保存失败!'; } } }
主要是在文件路径上面弄了很久。
最后一步,载入配置文件,修改Config.php,添加一行代码:
<?php return array( //载入自定义配置文件text 'LOAD_EXT_CONFIG'=>'text', );
(>﹏<) 完成,博主亲测可用。