1+ <?php
2+ // +----------------------------------------------------------------------
3+ // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
4+ // +----------------------------------------------------------------------
5+ // | Copyright (c) 2006-2013 http://thinkphp.cn All rights reserved.
6+ // +----------------------------------------------------------------------
7+ // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
8+ // +----------------------------------------------------------------------
9+ // | Author: liu21st <liu21st@gmail.com>
10+ // +----------------------------------------------------------------------
11+
12+ /**
13+ * ThinkPHP 目录创建和初始化
14+ */
15+ defined ('THINK_PATH ' ) or exit ();
16+
17+ // 检查应用目录结构 如果不存在则自动创建
18+ if (!is_dir (COMMON_PATH )) {
19+ // 创建目录结构
20+ build_app_dir ();
21+ }elseif (!is_dir (LOG_PATH )){
22+ // 检查缓存目录
23+ check_runtime ();
24+ }
25+
26+ // 检查缓存目录(Runtime) 如果不存在则自动创建
27+ function check_runtime () {
28+ if (!is_dir (RUNTIME_PATH )) {
29+ mkdir (RUNTIME_PATH );
30+ }elseif (!is_writeable (RUNTIME_PATH )) {
31+ header ('Content-Type:text/html; charset=utf-8 ' );
32+ exit ('目录 [ ' .RUNTIME_PATH .' ] 不可写! ' );
33+ }
34+ mkdir (CACHE_PATH ); // 模板缓存目录
35+ if (!is_dir (LOG_PATH )) mkdir (LOG_PATH ); // 日志目录
36+ if (!is_dir (TEMP_PATH )) mkdir (TEMP_PATH ); // 数据缓存目录
37+ if (!is_dir (DATA_PATH )) mkdir (DATA_PATH ); // 数据文件目录
38+ return true ;
39+ }
40+
41+ // 创建应用目录结构
42+ function build_app_dir () {
43+ // 没有创建的话自动创建
44+ if (!is_dir (APP_PATH )) mkdir (APP_PATH ,0755 ,true );
45+ if (is_writeable (APP_PATH )) {
46+ $ dirs = array (
47+ COMMON_PATH ,
48+ COMMON_PATH .'Common/ ' ,
49+ COMMON_PATH .'Conf/ ' ,
50+ APP_PATH .C ('DEFAULT_MODULE ' ).'/ ' ,
51+ APP_PATH .C ('DEFAULT_MODULE ' ).'/Common/ ' ,
52+ APP_PATH .C ('DEFAULT_MODULE ' ).'/Controller/ ' ,
53+ APP_PATH .C ('DEFAULT_MODULE ' ).'/Model/ ' ,
54+ APP_PATH .C ('DEFAULT_MODULE ' ).'/Conf/ ' ,
55+ APP_PATH .C ('DEFAULT_MODULE ' ).'/View/ ' ,
56+ RUNTIME_PATH ,
57+ CACHE_PATH ,
58+ LOG_PATH ,
59+ TEMP_PATH ,
60+ DATA_PATH ,
61+ );
62+ foreach ($ dirs as $ dir ){
63+ if (!is_dir ($ dir )) mkdir ($ dir ,0755 ,true );
64+ }
65+ // 写入目录安全文件
66+ build_dir_secure ($ dirs );
67+ // 写入初始配置文件
68+ if (!is_file (COMMON_PATH .'Conf/config.php ' ))
69+ file_put_contents (COMMON_PATH .'Conf/config.php ' ,"<?php \nreturn array( \n\t//'配置项'=>'配置值' \n); " );
70+ // 写入测试Action
71+ build_first_action ();
72+ }else {
73+ header ('Content-Type:text/html; charset=utf-8 ' );
74+ exit ('应用目录[ ' .APP_PATH .']不可写,目录无法自动生成!<BR>请手动生成项目目录~ ' );
75+ }
76+ }
77+
78+ // 创建测试Action
79+ function build_first_action () {
80+ $ file = APP_PATH .C ('DEFAULT_MODULE ' ).'/Controller/IndexController ' .EXT ;
81+ if (!is_file ($ file )){
82+ $ content = file_get_contents (THINK_PATH .'Tpl/default_index.tpl ' );
83+ file_put_contents ($ file ,$ content );
84+ }
85+ }
86+
87+ // 生成目录安全文件
88+ function build_dir_secure ($ dirs =array ()) {
89+ // 目录安全写入(默认开启)
90+ defined ('BUILD_DIR_SECURE ' ) or define ('BUILD_DIR_SECURE ' , true );
91+ if (BUILD_DIR_SECURE ) {
92+ defined ('DIR_SECURE_FILENAME ' ) or define ('DIR_SECURE_FILENAME ' , 'index.html ' );
93+ defined ('DIR_SECURE_CONTENT ' ) or define ('DIR_SECURE_CONTENT ' , ' ' );
94+ // 自动写入目录安全文件
95+ $ content = DIR_SECURE_CONTENT ;
96+ $ files = explode (', ' , DIR_SECURE_FILENAME );
97+ foreach ($ files as $ filename ){
98+ foreach ($ dirs as $ dir )
99+ file_put_contents ($ dir .$ filename ,$ content );
100+ }
101+ }
102+ }
0 commit comments