系统配置说明

本文默认框架入口文件名为index.php,系统配置是指index.php里面$system变量部分,在index.php里面你会看到一个名为$system的配置数组,下面对每项进行说明.

  1. /**
  2. * --------------------系统配置-------------------------
  3. */
  4. /**
  5. * 如果开启了URL Rewrite 功能,请在这里设置为TRUE,没有开启请设置为FALSE
  6. * 该配置会影响url()函数生成的href链接
  7. */
  8. $system['url_rewrite'] = FALSE;
  9. /**
  10. * 程序文件夹路径名称,也就是所有的程序文件比如控制器文件夹,
  11. * 模型文件夹,视图文件夹等所在的文件夹名称。
  12. */
  13. $system['application_folder'] = realpath('.') . '/' . 'application';
  14. /**
  15. * 存放控制器文件的文件夹路径名称
  16. */
  17. $system['controller_folder'] = $system['application_folder'] . '/controllers';
  18. /**
  19. * 存放模型文件的文件夹路径名称,支持数组
  20. */
  21. $system['model_folder'] = $system['application_folder'] . '/models';
  22. /**
  23. * 存放视图文件的文件夹路径名称,支持数组
  24. */
  25. $system['view_folder'] = $system['application_folder'] . '/views';
  26. /**
  27. * 存放类库文件的文件夹路径名称,存放在该文件夹的类库中的类会自动加载,支持数组
  28. */
  29. $system['library_folder'] = $system['application_folder'] . '/library';
  30. /**
  31. * 存放函数文件的文件夹路径名称,支持数组
  32. */
  33. $system['helper_folder'] = $system['application_folder'] . '/helper';
  34. /**
  35. * table()方法缓存表字段信息的文件夹路径名称
  36. */
  37. $system['table_cache_folder'] = $system['application_folder'] . '/cache';
  38. /**
  39. * 存放HMVC模块的文件夹路径名称
  40. */
  41. $system['hmvc_folder'] = $system['application_folder'] . '/modules';
  42. /**
  43. * 注册HMVC模块,这里填写模块名称关联数组,键是url中的模块别名,值是模块文件夹名称
  44. */
  45. $system['hmvc_modules'] = array('demo' => 'hmvc_demo');
  46. /**
  47. * 404错误文件的路径,该文件会在系统找不到相关内容时显示,
  48. * 文件里面可以使用$msg变量获取出错提示内容
  49. */
  50. $system['error_page_404'] = 'application/error/error_404.php';
  51. /**
  52. * 系统错误文件的路径,该文件会在发生Fatal错误和Exeption时显示,
  53. * 文件里面可以使用$msg变量获取出错提示内容
  54. */
  55. $system['error_page_50x'] = 'application/error/error_50x.php';
  56. /**
  57. * 数据库错误文件的路径,该文件会在发生数据库错误时显示,
  58. * 文件里面可以使用$msg变量获取出错提示内容
  59. */
  60. $system['error_page_db'] = 'application/error/error_db.php';
  61. /**
  62. * $this->message()方法默认使用的视图,该视图会在第4个参数为null时使用。
  63. * 视图里面可以使用的有三个变量:$msg提示内容,$url跳转的url,$time停留时间。
  64. * 这里需要填写的是视图名称,不带视图后缀。没有就留空。
  65. */
  66. $system['message_page_view'] = '';
  67. /**
  68. * 默认控制器文件名称,不包含后缀,支持子文件夹,比如home.welcome,
  69. * 就是控制器文件夹下面的home文件夹里面welcome.php(假定后缀是.php)
  70. */
  71. $system['default_controller'] = 'welcome';
  72. /**
  73. * 默认控制器方法名称,不要带前缀
  74. */
  75. $system['default_controller_method'] = 'index';
  76. /**
  77. * 控制器方法名称前缀
  78. */
  79. $system['controller_method_prefix'] = 'do';
  80. /**
  81. * 控制器文件名称后缀,比如.php或者.controller.php
  82. */
  83. $system['controller_file_subfix'] = '.php';
  84. /**
  85. * 模型文件名称后缀,比如.model.php
  86. */
  87. $system['model_file_subfix'] = '.model.php';
  88. /**
  89. * 视图文件名称后缀,比如.view.php'
  90. */
  91. $system['view_file_subfix'] = '.view.php';
  92. /**
  93. * 类库文件名称后缀,比如.class.php'
  94. */
  95. $system['library_file_subfix'] = '.class.php';
  96. /**
  97. * 函数文件名称后缀,比如.php'
  98. */
  99. $system['helper_file_subfix'] = '.php';
  100. /**
  101. * 自定义Loader,用于拓展框架核心功能,
  102. * Loader是控制器和模型都继承的一个类,大部分核心功能都在loader中完成。
  103. * 这里是自定义Loader类文件的完整路径
  104. * 自定义Loader文件名称和类名称必须是:
  105. * 文件名称:类名.class.php
  106. * 比如:MyLoader.class.php,文件里面的类名就是:MyLoader
  107. * 注意:
  108. * 1.自定义Loader必须继承MpLoader。
  109. * 2.一个最简单的Loader示意:(假设文件名称是:MyLoader.class.php)
  110. * class MyLoader extends MpLoader {
  111. * public function __construct() {
  112. * parent::__construct();
  113. * }
  114. * }
  115. * 3.如果无需自定义Loader,留空即可。
  116. * 4.自定义Loader在框架核心文件被包含时生效,此后修改$system['my_loader']无效。
  117. */
  118. $system['my_loader'] = '';
  119. /**
  120. * 自动加载的helper文件,比如:array($item);
  121. * $item是helper文件名或者"配置数组",不包含后缀。
  122. * 比如: html 或者配置数组array('html'=>false),
  123. * 这里的数组key是helper文件,值就是$is_config参数,是true或者false。
  124. */
  125. $system['helper_file_autoload'] = array();
  126. /**
  127. * 自动加载的library文件,比如array($item);
  128. * $item是library文件名或者"配置数组",不包含后缀,
  129. * 比如: ImageTool 或者配置数组array('ImageTool'=>'image'),
  130. * 或者配置数组array('ImageTool'=>'image','new'=>fasle)
  131. * 配置数组的作用是为长的类库名用别名代替.
  132. */
  133. $system['library_file_autoload'] = array();
  134. /**
  135. * 自动加载的model,比如array($item);
  136. * $item是model文件名或者"配置数组",不包含后缀,
  137. * 比如: UserModel 或者配置数组 array('UserModel'=>'user')
  138. * 配置数组的作用是为长的model名用别名代替.
  139. */
  140. $system['models_file_autoload'] = array();
  141. /**
  142. * 控制器方法名称是否首字母大写,默认true
  143. */
  144. $system['controller_method_ucfirst'] = TRUE;
  145. /**
  146. * 是否自动连接数据库,默认FALSE
  147. */
  148. $system['autoload_db'] = FALSE;
  149. /**
  150. * 是否开启调试模式
  151. * true:显示错误信息,
  152. * false:所有错误将不显示
  153. */
  154. $system['debug'] = TRUE;
  155.  
  156. /**
  157. * 是否接管错误信息显示
  158. * true:所有错误信息将由系统格式化输出
  159. * false:所有错误信息将原样输出
  160. */
  161. $system['error_manage'] = FALSE;
  162.  
  163. /**
  164. * 是否开启错误日志记录
  165. * true:开启,如果开启了,系统将接管错误信息输出,忽略system['error_manage']和$system['db']['default']['db_debug'],
  166. * 同时务必设置自己的错误日志记录处理方法
  167. * false:关闭
  168. * 提示:
  169. * 数据库错误信息是否显示是由:$system['debug']和db_debug($system['db']['default']['db_debug'])控制的。
  170. * 只用都为TRUE时才会显示。
  171. */
  172. $system['log_error'] = FALSE;
  173. /* * --------------------------------错误日志记录处理配置-----------------------
  174. * 错误日志记录处理方法,可以是一个“函数名称”或是“类的静态方法”用数组方式array('class_name'=>'method_name')。
  175. * 提示:
  176. * 1.如果是类,把类按着类库的命名方式命名,然后放到类库目录即可;
  177. * 2.如果是函数,把函数放到一个helper文件里面,然后在$system['helper_file_autoload']自动加载的helper文件里面填写上这个helper文件即可。
  178. * 3.留空则不处理。
  179. * 4.系统会传递给error、exception处理方法5个参数:($errno, $errstr, $errfile, $errline,$strace)
  180. * 参数说明:
  181. * $errno:错误级别,就是PHP里面的E_NOTICE之类的静态变量,错误级别和具体含义对应关系如下,键是代码,值是代码含义。
  182. * array('0'=>'EXCEPTION',//异常信息
  183. * '1' => 'ERROR',//致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
  184. * '2' => 'WARNING', //运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
  185. * '4' => 'PARSE', //编译时语法解析错误。解析错误仅仅由分析器产生。
  186. * '8' => 'NOTICE', //运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
  187. * '16' => 'CORE_ERROR', //在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。
  188. * '32' => 'CORE_WARNING',//PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。
  189. * '64' => 'COMPILE_ERROR', //致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。
  190. * '128' => 'COMPILE_WARNING', //编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。
  191. * '256' => 'USER_ERROR', //用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
  192. * '512' => 'USER_WARNING', //用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
  193. * '1024' => 'USER_NOTICE',//用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
  194. * '2048' => 'STRICT', //启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
  195. * '4096' => 'RECOVERABLE_ERROR'//可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。
  196. * '8192' => 'DEPRECATED', //(php5.3)运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。
  197. * '16384' => 'USER_DEPRECATED', //(php5.3)用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
  198. * );
  199. * 可以通过判断错误级别,然后有针对性的处理。一般我们需要处理的就是致命错误(0,1,4)和一般错误(2,8,2048,8192).
  200. * $errstr:具体的错误信息
  201. * $errfile:出错的文件完整路径
  202. * $errline:出错的行号
  203. * $strace: 调用堆栈信息
  204. * 系统会传递给db_error处理方法2个参数:($errmsg,$strace)
  205. * 参数说明:
  206. * $errmsg:具体的数据库错误信息
  207. * $strace:调用堆栈信息
  208. * 错误控制类参考:
  209. * http://git.oschina.net/snail/microphp/blob/development/tests/app/library/ErrorHandle.class.php
  210. */
  211. $system['log_error_handle'] = array(
  212. 'error' => '', //array('ErrorHandle' => 'error_handle'),
  213. 'exception' => '', //array('ErrorHandle' => 'exception_handle'),
  214. 'db_error' => '', //array('ErrorHandle' => 'db_error_handle')
  215. );
  216.  
  217.  
  218. /**
  219. * 默认时区,PRC是中国
  220. */
  221. $system['default_timezone'] = 'PRC';
  222.  
  223. /**
  224. * ---------------------------自定义URL路由规则------------------------
  225. * 比如:
  226. * (1).http://localhost/index.php?welcome.index
  227. * (2).http://localhost/index.php/welcome.index
  228. * (3).http://localhost/index.php?news/welcome.index
  229. * (4).http://localhost/index.php/news/welcome.index
  230. * 路由字符串是welcome.index(不包含最前面的?、/、模块名称),路由规则都是针对“路由字符串”的。
  231. * 现在定义路由规则:
  232. * $system['route']=array(
  233. * "/^welcome/?(.*)$/u"=>'welcome.ajax/$1'
  234. * );
  235. * 路由规则说明:
  236. * 1.路由规则是一个关联数组
  237. * 2.数组的key是匹配“路由字符串”的正则表达式,其实就是preg_match的第一个参数。
  238. * 3.数组的value是替换后的路由字符串
  239. * 4.系统使用的url路由就是最后替换后的路由字符串
  240. */
  241. $system['route'] = array(
  242. //"/^welcome/?(.*)$/u" => 'welcome.ajax/$1',
  243. );
  244. /**
  245. * ---------------------缓存配置-----------------------
  246. */
  247. /**
  248. * 自定义缓存类文件的路径是$system['cache_drivers']的一个元素,
  249. * 可以有多个自定义缓存类。
  250. * 缓存类文件名称命名规范是:
  251. * 比如文件名是mycahe.php,那么文件mycahe.php
  252. * 里面的缓存类就是:class phpfastcache_mycahe{......}
  253. * mycahe.php的编写规范请参考:
  254. * http://git.oschina.net/snail/microphp/blob/development/modules/cache-drivers/drivers/example.php
  255. */
  256. $system['cache_drivers'] = array();
  257. /**
  258. * 缓存配置项
  259. */
  260. $system['cache_config'] = array(
  261. /*
  262. * 默认存储方式
  263. * 可用的方式有:auto,apc,files,sqlite,memcached,redis,wincache,xcache,memcache
  264. * auto自动模式寻找的顺序是 : apc,apc,files,sqlite,memcached,redis,wincache,xcache,memcache
  265. */
  266. "storage" => "auto",
  267. /*
  268. * 默认缓存文件存储的路径
  269. * 使用绝对全路径,比如: /home/username/cache
  270. * 留空,系统自己选择
  271. */
  272. "path" => $system['application_folder'] . "/cache", // 缓存文件存储默认路径,使用files缓存的时候确保文件夹存在而且可写
  273. /*
  274. * 第二驱动
  275. * 比如:当你现在在代码中使用的是memcached, apc等等,然后你的代码转移到了一个新的服务器而且不支持memcached 或 apc
  276. * 这时候怎么办呢?设置第二驱动即可,当你设置的驱动不支持的时候,系统就使用第二驱动。
  277. * $key是你设置的驱动,当设置的“storage”=$key不可用时,就使用$key对应的$value驱动
  278. */
  279. "fallback" => array(
  280. "memcache" => "files",
  281. "memcached" => "files",
  282. "redis" => "files",
  283. "wincache" => "files",
  284. "xcache" => "files",
  285. "apc" => "files",
  286. "sqlite" => "files",
  287. ),
  288. /*
  289. * Memcache服务器地址;
  290. */
  291. "server" => array(
  292. array("127.0.0.1", 11211, 1),
  293. // array("new.host.ip",11211,1),
  294. ),
  295. /*
  296. * Redis服务器地址;
  297. */
  298. "redis" => array(
  299. 'type' => 'tcp', //sock,tcp;连接类型,tcp:使用host port连接,sock:本地sock文件连接
  300. 'prefix' => @$_SERVER['HTTP_HOST'], //key的前缀,便于管理查看,在set和get的时候会自动加上和去除前缀,无前缀请保持null
  301. 'sock' => '', //sock的完整路径
  302. 'host' => '127.0.0.1',
  303. 'port' => 6379,
  304. 'password' => NULL, //密码,如果没有,保持null
  305. 'timeout' => 0, //0意味着没有超时限制,单位秒
  306. 'retry' => 100, //连接失败后的重试时间间隔,单位毫秒
  307. 'db' => 0, // 数据库序号,默认0, 参考 http://redis.io/commands/select
  308. ),
  309. );
  310. /**
  311. * -----------------------SESSION管理配置---------------------------
  312. */
  313. $system['session_handle'] = array(
  314. 'handle' => '', //支持的管理类型:mongodb,mysql,memcache,redis。留空则不管理,使用默认
  315. 'common' => array(
  316. 'autostart' => true, //是否自动session_start()
  317. 'cookie_path' => '/',
  318. 'cookie_domain' => '.' . @$_SERVER['HTTP_HOST'],
  319. 'session_name' => 'PHPSESSID',
  320. 'lifetime' => 3600, // session lifetime in seconds
  321. ),
  322. 'mongodb' => array(
  323. 'host' => '127.0.0.1',
  324. 'port' => 27017,
  325. 'user' => 'root',
  326. 'password' => 'local',
  327. 'database' => 'local', // name of MongoDB database
  328. 'collection' => 'session', // name of MongoDB collection
  329. // persistent related vars
  330. 'persistent' => false, // persistent connection to DB?
  331. 'persistentId' => 'MongoSession', // name of persistent connection
  332. // whether we're supporting replicaSet
  333. 'replicaSet' => false,
  334. ),
  335. /**
  336. * mysql表结构
  337. * CREATE TABLE `session_handler_table` (
  338. `id` varchar(255) NOT NULL,
  339. `data` mediumtext NOT NULL,
  340. `timestamp` int(255) NOT NULL,
  341. PRIMARY KEY (`id`),
  342. UNIQUE KEY `id` (`id`,`timestamp`),
  343. KEY `timestamp` (`timestamp`)
  344. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  345. */
  346. 'mysql' => array(
  347. 'host' => '127.0.0.1',
  348. 'port' => 3306,
  349. 'user' => 'root',
  350. 'password' => 'admin',
  351. 'database' => 'test',
  352. 'table' => 'session_handler_table',
  353. ),
  354. /**
  355. * memcache采用的是session.save_handler管理机制
  356. * 需要php安装memcache拓展支持
  357. */
  358. 'memcache' => "tcp://127.0.0.1:11211",
  359. /**
  360. * redis采用的是session.save_handler管理机制
  361. * 需要php安装redis拓展支持,你可以在https://github.com/nicolasff/phpredis 找到该拓展。
  362. */
  363. 'redis' => "tcp://127.0.0.1:6379",
  364. );
  365. /**
  366. * ------------------------数据库配置----------------------------
  367. */
  368. /**
  369. * 默认使用的数据库组名称,名称就是下面的$system['db'][$key]里面的$key,
  370. * 可以自定义多个数据库组,然后根据不同的环境选择不同的组作为默认数据库连接信息
  371. */
  372. $system['db']['active_group'] = 'default';
  373.  
  374. /**
  375. * dbdriver:可用的有mysql,mysqli,pdo,sqlite3,配置见下面
  376. */
  377. /**
  378. * mysql数据库配置示例
  379. */
  380. $system['db']['default']['dbdriver'] = "mysql";
  381. $system['db']['default']['hostname'] = '127.0.0.1';
  382. $system['db']['default']['port'] = '3306';
  383. $system['db']['default']['username'] = 'root';
  384. $system['db']['default']['password'] = 'admin';
  385. $system['db']['default']['database'] = 'test';
  386. $system['db']['default']['dbprefix'] = '';
  387. $system['db']['default']['pconnect'] = TRUE;
  388. $system['db']['default']['db_debug'] = TRUE;
  389. $system['db']['default']['char_set'] = 'utf8';
  390. $system['db']['default']['dbcollat'] = 'utf8_general_ci';
  391. $system['db']['default']['swap_pre'] = '';
  392. $system['db']['default']['autoinit'] = TRUE;
  393. $system['db']['default']['stricton'] = FALSE;
  394.  
  395.  
  396. /*
  397. * PDO database config demo
  398. * 1.pdo sqlite3
  399. * */
  400. /**
  401. * sqlite3数据库配置示例
  402. */
  403. $system['db']['sqlite3']['dbdriver'] = "sqlite3";
  404. $system['db']['sqlite3']['database'] = 'sqlite:d:/wwwroot/sdb.db';
  405. $system['db']['sqlite3']['dbprefix'] = '';
  406. $system['db']['sqlite3']['db_debug'] = TRUE;
  407. $system['db']['sqlite3']['char_set'] = 'utf8';
  408. $system['db']['sqlite3']['dbcollat'] = 'utf8_general_ci';
  409. $system['db']['sqlite3']['swap_pre'] = '';
  410. $system['db']['sqlite3']['autoinit'] = TRUE;
  411. $system['db']['sqlite3']['stricton'] = FALSE;
  412. /**
  413. * PDO mysql数据库配置示例,hostname 其实就是pdo的dsn部分,
  414. * 如果连接其它数据库按着pdo的dsn写法连接即可
  415. */
  416. $system['db']['pdo_mysql']['dbdriver'] = "pdo";
  417. $system['db']['pdo_mysql']['hostname'] = 'mysql:host=localhost;port=3306';
  418. $system['db']['pdo_mysql']['username'] = 'root';
  419. $system['db']['pdo_mysql']['password'] = 'admin';
  420. $system['db']['pdo_mysql']['database'] = 'test';
  421. $system['db']['pdo_mysql']['dbprefix'] = '';
  422. $system['db']['pdo_mysql']['db_debug'] = TRUE;
  423. $system['db']['pdo_mysql']['char_set'] = 'utf8';
  424. $system['db']['pdo_mysql']['dbcollat'] = 'utf8_general_ci';
  425. $system['db']['pdo_mysql']['swap_pre'] = '';
  426. $system['db']['pdo_mysql']['autoinit'] = TRUE;
  427. $system['db']['pdo_mysql']['stricton'] = FALSE;
  428. /**
  429. * -------------------------数据库配置结束--------------------------
  430. */
  431.