這些配置項壹般都是寫到壹個專門的配置文件當中的,例如:
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);
}