php的cms系统或者其他系统,后台配置项,是如何调用的?
发布网友
发布时间:2022-04-19 20:17
我来回答
共1个回答
热心网友
时间:2023-06-25 07:16
这些配置项一般都是写到一个专门的配置文件当中的,例如:
phpcms是将所有的配置文件放置到了configs目录当中,目录当中又写了database.php(数据库配置项),system.php(系统配置项)等等
配置项在这些文件中直接写成了一个数组,使用的时候写一个获取配置项的函数get_config('database'),这样直接是把database.php给include进来了
更改配置项的时候是file_get_contents,然后匹配替换相关配置就好了。
/**
* 设置config文件
* @param $config 配属信息
* @param $filename 要配置的文件名称
*/
function set_config($config, $filename="system") {
$configfile = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$filename.'.php';
if(!is_writable($configfile)) showmessage('Please chmod '.$configfile.' to 0777 !');
$pattern = $replacement = array();
foreach($config as $k=>$v) {
if(in_array($k,array('js_path','css_path','img_path','attachment_stat','admin_log','gzip','errorlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth_key','phpsso_version','connect_enable', 'upload_url','sina_akey', 'sina_skey', 'snda_enable', 'snda_status', 'snda_akey', 'snda_skey', 'qq_akey', 'qq_skey','qq_appid','qq_appkey','qq_callback','admin_url'))) {
$v = trim($v);
$configs[$k] = $v;
$pattern[$k] = "/'".$k."'\s*=>\s*([']?)[^']*([']?)(\s*),/is";
$replacement[$k] = "'".$k."' => \${1}".$v."\${2}\${3},";
}
}
$str = file_get_contents($configfile);
$str = preg_replace($pattern, $replacement, $str);
return pc_base::load_config('system','lock_ex') ? file_put_contents($configfile, $str, LOCK_EX) : file_put_contents($configfile, $str);
}