配置文件均位于/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个从服务器....
)
)
);