类discuz_application中_init_config方法
1、$_config = array();
@include DISCUZ_ROOT.'./config/config_global.php';
加载配置文件,config文件夹下面有配置config_global_default.php。如果没看源代码小编还以为config_global_default.php是配置文件,config_global.php是备份文件呢。配置文件第一句就是$_config = array();,方法第一句定义了,配置文件也定义了,下面解释。
2、if(empty($_config)){
if(!file_exists(DISCUZ_ROOT.'./data/install.lock')) {
header('location: install');
exit;
} else {
system_error('config_notfound');
}
}
$_config数组配置文件是否为空,这儿只判断为空,而不判断是否存在,因为开头第一句代码已经定义了$_config = array()。
file_exists(DISCUZ_ROOT.'./data/install.lock')是否有install.lock,有表示正常安装,没表示不正常安装。
源代码包config下有config_global_default.php,安装成功后有config_global.php文件。
函数system_error以后再说。
3、if(empty($_config['security']['authkey'])) {
$_config['security']['authkey']=md5($_config['cookie']['cookiepre'].$_config['db'][1]['dbname']);
}
密钥,这儿加密方式和刚开始安装install不同。$authkey = substr(md5($_SERVER['SERVER_ADDR'].$_SERVER['HTTP_USER_AGENT'].$dbhost.$dbuser.$dbpw.$dbname.$username.$password.$pconnect.substr($timestamp, 0, 6)), 8, 6).random(10);authkey算法存在安全漏洞,漏洞在Discuz_X3.4中被修复。
4、if(empty($_config['debug']) || !file_exists(libfile('function/debug'))) {
define('DISCUZ_DEBUG', false);
error_reporting(0);
}
$_config['debug'],libfile('function/debug')小编这儿都不存在,执行if体。error_reporting(0);禁用错误报告。
5、define('STATICURL',!empty($_config['output']['staticurl'])?$_config['output']['staticurl'] : 'static/');
$this->var['staticurl'] = STATICURL;
staticurl,静态路径,不是完整路径,仅仅是static/。里面放的都是css,js,图片。
6、$this->config = & $_config;
$this->var['config'] = & $_config;
$_config地址复制给属性。这儿干嘛赋值给两个属性呀?
7、if(substr($_config['cookie']['cookiepath'], 0, 1) != '/') {
$this->var['config']['cookie']['cookiepath']='/'.$this->var['config']['cookie']['cookiepath'];
}
cookiepath 有效的服务器路径。 设置成 '/' 时,Cookie 对整个域名 domain 有效。 如果设置成 '/foo/', Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效。
测试一下,配置文件config_global.php中$_config['cookie']['cookiepath'] = 'test';$this->var['config']['cookie']['cookiepath']=’/test’;