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',
);
(>﹏<) 完成,博主親測可用。
