ShopCMS 开发文档
HFramework 开发文档

2.3 配置文件详解

配置文件均位于/application/config目录中。
网站的主配置文件为main.php,此文件内是一个返回式数组,各个配置项大小写敏感,请勿输入多余的空格。
自定义的配置文件也位于此目录,并且格式与主配置文件类似(返回式数组)。
获取配置的方法为:H::getConfig('item', 'main.php');  其中item表示配置文件的子项,可以省略,省略表示获取全部配置内容; main.php表示配置文件的文件名,可以省略,省略表示主配置文件,即main.php。
类似的,您也可以用H::getConfig('', 'smtp.php'); 获取邮件服务器的全部配置项。

下面主要介绍主配置文件,主配置文件的内容如下,各项配置的作用见注释:
<?php
return array(
	/**
	 * 网站配置
	 */
	'site' => array(
		//'cache'=>'file',//使用缓存的类型  可选值 file/memcache/redis/apc 如果不使用缓存,请注释该行;但注释该行后,强制调用Cache类(H::cache())仍会启用文件缓存
		'controller'=>'index',//默认controller
		'action'=>'main',//默认的行为方法名
		'site_name' => 'SHOPCMS后台管理系统',//网站名称
		'site_url' => 'http://localhost',//网站URL,如果网站在子目录中,需要带上子目录,用于生成接口回调等(如支付宝/微信支付完成后的通知地址)
		'error_url' => '/?_=site/error',//出错时跳转URL,如果未设置,则输出错误信息;此设置仅在非调试模式下有效
		'login_url' => '/?_=passport/login',//登录URL
		'salt'=>'k3D8$jrF&x6P%333Ah8C9',//任意字符串,用于混淆加密用户密码、cookie加密、上传的文件名加密等;上线后不可再修改,否则会导致所有用户密码错误。
		/*
		 * 此处也可以添加自定义配置,
		 * 配置内容可以通过H::getConfig('配置项名')来访问
		 * 如此处 H::getConfig('site')返回当前site配置内容数组
		 */
	),
	
	//配置文件上传
	'upload' => array(
		//'ext'=>'jpg,jpeg,gif,bmp,png,swf,rar,zip',  //(可选值)上传文件的类型(不区分大小写)
		//'size'=>2048,  //(可选值)上传文件的大小,单位Kb  大于此值的文件将被丢弃
		//'dir'=>$_SERVER['DOCUMENT_ROOT'] ,//(可选值)上传文件保存目录(绝对目录) 系统会默认在此目录中自动创建/upload/files和/upload/files_th目录用于存放原文件和缩略图, 默认为网站根目录下的upload目录
	),
	
	/**
	 * (可选值,此项可以删除或者完全注释)
	 * URL重写规则,主要目的是把动态创建的URL地址修改为自定义的格式,用于优化URL。此项配置需要结合服务器的地址重写来使用,否则您自定义的内容可能无法访问,报404错误。
	 * 此处配置应用于 /framework/HView.php 中的的createUrl方法;
	 * 每项代表一个规则,当匹配成功时,不再尝试剩余规则;
	 * 其中键名是正则表达式,用于匹配原生的URL(如:/index.php?_=/article/detail&id=1);
	 * 键值是字符串,其中$n(n=1,2,3...)表示匹配规则中第n个括号匹配到的内容;
	 * 举例如下
	 * 假设:原生的URL为  index.php?_=/a/b,
	 * 假设:重写规则为:'/index.php?_=/(w+)/(w+)/' =>'/$1/$2.html',
	 * 则,URL重写后的结果为 /a/b.html
	 * 注:重写只是变换网址的显示形式,要使用重写后的网址能够访问,还需要服务器配合,服务器把重写后的网址还原为变换前的状态,如:
	 * 当用户访问 /a/b.html时,服务器应重写为(index.php?_=/a/b)
	 */
	'rewrite'=>array(
		'/index.php?_=/?$/' =>'index.html',//index.php?_=/ 重写为 index.html
		'/index.php?_=/doc/detail&id=(d+)$/' =>'doc-$1.html',//举例:index.php?_article/detail&id=1   重写为  article-1.html
		'/index.php?_=/?((w+/?)+)$/' =>'$1.html',//举例:index.php?_=a/b/c 重写为 /a/b/c.html
		'/index.php?_=/?((w+/?)+)&(.*)$/' =>'$1.html?$3',//举例:index.php?_=a/b&grade=1 重写为 /a/b.html?grade=1
	),

	/**
	 * session
	 * 使用框架SESSION变量(H::$SESSION)前,需要调用H::sessionStart()方法
	 */
	'session' => array(
		'auto_start' => true,//自动启动  session没有启动,不可以调用框架的SESSION方法

		/**
		 * session 数据在服务器上存储方式,
		 * 可选项有:
		 * session:PHP自带的session存储
		 * cache :此配置文件 site节配置的cache方式存储
		 * 存储在cache中,会加速session的访问,但在管理员清理缓存的时候,所有用户的SESSION都会丢失
		 * 默认 php
		 * 
		 */
		'data_source' => 'session',
		
		/**
		 * 是否采用cookie传输sessionID,默认值为cookie,可选值为:
		 * none:不使用cookie存储,此模式适用客户端无法提供cookie服务的场景,比如移动端接口。
		 * 此模式下,sessionID可以通过接口传入,见HSession类中的setSessionId方法
		 * cookie:使用cookie传输sessionID
		 * httponly:使用cookie传输sessionID,并且启用cookie的httponly模式,该模式下,sessionID不会被浏览器脚本访问,可有效避免XSS攻击。
		 */
		 'cookie_mode'=>'cookie',
		 
		/**
		 * 作用域,设置session在哪些域名下有效(session的作用域是基于cookie的作用域)
		 * 为空:表示只对当前域名有效,对当前域名的子域名无效
		 * 非空域名:对当前域名和当前域名的子域名都有效
		 * 如:设为 domain.com  则session 在domain.com 和 subdomain.domain.com下都有效
		 * 默认为空
		 * 注:只有在 cookie_mode 为 httponly 或者  cookie下本设置才有效,否则所有域名都有效
		 */
		'domain' => '',
	),
	
	/*
	 * 数据库配置  如果不需要数据库服务,此节可以删除
	 * 支持读写分离,其中写操作的数据库只有一个,读的数据库可以有若干个
	 * 若读写库为同一个数据库,则只配置master库即可
	 */
	'db'=>array(
    	'prefix' =>'hl_',//表前缀
    	//配置主数据库
		'master'=>array(
			'dsn'  => 'mysql:host=127.0.0.1;port=3306;dbname=dbName',//dns的设置是基于PDO的配置,详情您也可以了解PDO相关配置
			'username' => 'root',//数据库用户名
			'password' => '',//数据库密码
			//'driver_options' => array(PDO::ATTR_PERSISTENT => true, ),  //(可选值)PDO其他配置项
		),
		//配置从数据库,如果只有一个数据库(读写同库),不必配置下面slave节的数据库信息
		'slave'=>array(
			//配置第1个从数据库信息
		/**	array(
				'dsn'  => 'mysql:host=127.0.0.1;port=3306;dbname=dbName2',
				'username' => 'root',
				'password' => '',
				'charset'=> 'utf8',
				'driver_options' => array(PDO::ATTR_PERSISTENT => false),
				'weight'=>10,////被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
			),
			//配置第2个从数据库的信息
			array(
				'dsn'  => 'mysql:host=127.0.0.1;port=8036;dbname=dbName',
				'username' => 'root',
				'password' => '',
				'charset'=> 'utf8',
				'driver_options' => array(PDO::ATTR_PERSISTENT => false),
				'weight'=>10,////被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
			),
//配置第N个从数据库信息
		 **/
		),
	),
	/**
	 * 文件缓存 配置  不支持分布式集群、跨服务器,如果要支持跨服务器访问,需要对服务器特别设置,如samba服务
	 * 文件缓存目录默认为 application/temp  此目录必须可读可写,为安全起见,此目录不能被网址直接访问(可随/aplication目录移动到别处);
	 * 如果需要修改为其他目录(非application/temp),则需要在入口文件(index.php)开头定义 define('TEMP', 目录名);
	 */
	'filecahe'=>array(
		'gc'=>1024,//回收过期缓存文件的概率,越大被清理的概率越低,默认为:1024,如果设置为1024,则表示触发清理机制的概率是1/1024,设置过小,清理频繁,会浪费服务器资源;设置过大,会造成清理不及时,产生过多垃圾文件。建议设置值约为日页面浏览次数
	),
	/**
	 * memcache 配置  支持分布式集群,如果没有memcache服务,此节可以删
	 */
	'memcache'=> array(
		//配置第1个memcache服务器
		array(
			'host'=>'127.0.0.1',//服务器地址
			'port'  =>'11211',//端口号
			'weight'=>'1',//被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
		),
		//配置第2个memcache服务器
		array(
			'host'=>'127.0.0.1',//服务器地址
			'port'  =>'11211',//端口号
			'weight'=>'1',//被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
		),
		//配置第N个从服务器....
	),
	/**
	 * Rrdis配置  如果没有redis服务,此节可以删
	 */
	'redis'=> array(
		/**
		 * 支持读写分离  如果不需要读写分离,只需要配置master即可
		 * 如果要配置读写分离,则主服务器(master)只负责写入操作,其余为从服务器(slave)只负责读取操作
		 */
		'master'=>array(
			'host'=>'127.0.0.1',//服务器地址
			'port'  =>'6379',//端口号
		),
		'slave'=>array(//从服务器配置
			//第1个从服务器
			array(
				'host'=>'127.0.0.1',//服务器地址
				'port'  =>'6379',//端口号
				'weight'=>10,//被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
			),
			//第2个从服务器
			array(
				'host'=>'127.0.0.1',//服务器地址
				'port'  =>'6379',//端口号
				'weight'=>10,//被访问到的排序  越大访问的概率越大(<=0时表示服务不可用)
			),
			//第N个从服务器....
		)
	)
);
阅读:2886 | 发布时间:2018-12-18 14:44