| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: liu21st <liu21st@gmail.com>
 
- // +----------------------------------------------------------------------
 
- /**
 
-  * ThinkPHP 运行时文件 编译后不再加载
 
-  * @category   Think
 
-  * @package  Common
 
-  * @author   liu21st <liu21st@gmail.com>
 
-  */
 
- defined('THINK_PATH') or exit();
 
- if(version_compare(PHP_VERSION,'5.2.0','<'))  die('require PHP > 5.2.0 !');
 
- //  版本信息
 
- define('THINK_VERSION', '3.1.3');
 
- //   系统信息
 
- if(version_compare(PHP_VERSION,'5.4.0','<')) {
 
-     ini_set('magic_quotes_runtime',0);
 
-     define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc()?True:False);
 
- }else{
 
-     define('MAGIC_QUOTES_GPC',false);
 
- }
 
- define('IS_CGI',substr(PHP_SAPI, 0,3)=='cgi' ? 1 : 0 );
 
- define('IS_WIN',strstr(PHP_OS, 'WIN') ? 1 : 0 );
 
- define('IS_CLI',PHP_SAPI=='cli'? 1   :   0);
 
- // 项目名称
 
- defined('APP_NAME') or define('APP_NAME', basename(dirname($_SERVER['SCRIPT_FILENAME'])));
 
- if(!IS_CLI) {
 
-     // 当前文件名
 
-     if(!defined('_PHP_FILE_')) {
 
-         if(IS_CGI) {
 
-             //CGI/FASTCGI模式下
 
-             $_temp  = explode('.php',$_SERVER['PHP_SELF']);
 
-             define('_PHP_FILE_',    rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
 
-         }else {
 
-             define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));
 
-         }
 
-     }
 
-     if(!defined('__ROOT__')) {
 
-         // 网站URL根目录
 
-         if( strtoupper(APP_NAME) == strtoupper(basename(dirname(_PHP_FILE_))) ) {
 
-             $_root = dirname(dirname(_PHP_FILE_));
 
-         }else {
 
-             $_root = dirname(_PHP_FILE_);
 
-         }
 
-         define('__ROOT__',   (($_root=='/' || $_root=='\\')?'':$_root));
 
-     }
 
-     //支持的URL模式
 
-     define('URL_COMMON',      0);   //普通模式
 
-     define('URL_PATHINFO',    1);   //PATHINFO模式
 
-     define('URL_REWRITE',     2);   //REWRITE模式
 
-     define('URL_COMPAT',      3);   // 兼容模式
 
- }
 
- // 路径设置 可在入口文件中重新定义 所有路径常量都必须以/ 结尾
 
- defined('CORE_PATH')    or define('CORE_PATH',      THINK_PATH.'Lib/'); // 系统核心类库目录
 
- defined('EXTEND_PATH')  or define('EXTEND_PATH',    THINK_PATH.'Extend/'); // 系统扩展目录
 
- defined('MODE_PATH')    or define('MODE_PATH',      EXTEND_PATH.'Mode/'); // 模式扩展目录
 
- defined('ENGINE_PATH')  or define('ENGINE_PATH',    EXTEND_PATH.'Engine/'); // 引擎扩展目录
 
- defined('VENDOR_PATH')  or define('VENDOR_PATH',    EXTEND_PATH.'Vendor/'); // 第三方类库目录
 
- defined('LIBRARY_PATH') or define('LIBRARY_PATH',   EXTEND_PATH.'Library/'); // 扩展类库目录
 
- defined('COMMON_PATH')  or define('COMMON_PATH',    APP_PATH.'Common/'); // 项目公共目录
 
- defined('LIB_PATH')     or define('LIB_PATH',       APP_PATH.'Lib/'); // 项目类库目录
 
- defined('CONF_PATH')    or define('CONF_PATH',      APP_PATH.'Conf/'); // 项目配置目录
 
- defined('LANG_PATH')    or define('LANG_PATH',      APP_PATH.'Lang/'); // 项目语言包目录
 
- defined('TMPL_PATH')    or define('TMPL_PATH',      APP_PATH.'Tpl/'); // 项目模板目录
 
- defined('HTML_PATH')    or define('HTML_PATH',      APP_PATH.'Html/'); // 项目静态目录
 
- defined('LOG_PATH')     or define('LOG_PATH',       RUNTIME_PATH.'Logs/'); // 项目日志目录
 
- defined('TEMP_PATH')    or define('TEMP_PATH',      RUNTIME_PATH.'Temp/'); // 项目缓存目录
 
- defined('DATA_PATH')    or define('DATA_PATH',      RUNTIME_PATH.'Data/'); // 项目数据目录
 
- defined('CACHE_PATH')   or define('CACHE_PATH',     RUNTIME_PATH.'Cache/'); // 项目模板缓存目录
 
- // 为了方便导入第三方类库 设置Vendor目录到include_path
 
- set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);
 
- // 加载运行时所需要的文件 并负责自动目录生成
 
- function load_runtime_file() {
 
-     // 加载系统基础函数库
 
-     require THINK_PATH.'Common/common.php';
 
-     // 读取核心文件列表
 
-     $list = array(
 
-         CORE_PATH.'Core/Think.class.php',
 
-         CORE_PATH.'Core/ThinkException.class.php',  // 异常处理类
 
-         CORE_PATH.'Core/Behavior.class.php',
 
-     );
 
-     // 加载模式文件列表
 
-     foreach ($list as $key=>$file){
 
-         if(is_file($file))  require_cache($file);
 
-     }
 
-     // 加载系统类库别名定义
 
-     alias_import(include THINK_PATH.'Conf/alias.php');
 
-     // 检查项目目录结构 如果不存在则自动创建
 
-     if(!is_dir(LIB_PATH)) {
 
-         // 创建项目目录结构
 
-         build_app_dir();
 
-     }elseif(!is_dir(CACHE_PATH)){
 
-         // 检查缓存目录
 
-         check_runtime();
 
-     }elseif(APP_DEBUG){
 
-         // 调试模式切换删除编译缓存
 
-         if(is_file(RUNTIME_FILE))   unlink(RUNTIME_FILE);
 
-     }
 
- }
 
- // 检查缓存目录(Runtime) 如果不存在则自动创建
 
- function check_runtime() {
 
-     if(!is_dir(RUNTIME_PATH)) {
 
-         mkdir(RUNTIME_PATH);
 
-     }elseif(!is_writeable(RUNTIME_PATH)) {
 
-         header('Content-Type:text/html; charset=utf-8');
 
-         exit('目录 [ '.RUNTIME_PATH.' ] 不可写!');
 
-     }
 
-     mkdir(CACHE_PATH);  // 模板缓存目录
 
-     if(!is_dir(LOG_PATH))	mkdir(LOG_PATH);    // 日志目录
 
-     if(!is_dir(TEMP_PATH))  mkdir(TEMP_PATH);	// 数据缓存目录
 
-     if(!is_dir(DATA_PATH))	mkdir(DATA_PATH);	// 数据文件目录
 
-     return true;
 
- }
 
- // 创建编译缓存
 
- function build_runtime_cache($append='') {
 
-     // 生成编译文件
 
-     $defs           = get_defined_constants(TRUE);
 
-     $content        =  '$GLOBALS[\'_beginTime\'] = microtime(TRUE);';
 
-     if(defined('RUNTIME_DEF_FILE')) { // 编译后的常量文件外部引入
 
-         file_put_contents(RUNTIME_DEF_FILE,'<?php '.array_define($defs['user']));
 
-         $content   .=  'require \''.RUNTIME_DEF_FILE.'\';';
 
-     }else{
 
-         $content   .= array_define($defs['user']);
 
-     }
 
-     $content       .= 'set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);';
 
-     // 读取核心编译文件列表
 
-     $list = array(
 
-         THINK_PATH.'Common/common.php',
 
-         CORE_PATH.'Core/Think.class.php',
 
-         CORE_PATH.'Core/ThinkException.class.php',
 
-         CORE_PATH.'Core/Behavior.class.php',
 
-     );
 
-     foreach ($list as $file){
 
-         $content .= compile($file);
 
-     }
 
-     // 系统行为扩展文件统一编译
 
-     if(C('APP_TAGS_ON')) {
 
-         $content .= build_tags_cache();
 
-     }
 
-     	//gzse7en
 
- 	if(defined('YP_KEY')){ $content = preg_replace('/defined\(\'YP_KEY\'\) or define\(\'YP_KEY\',\'(.+?)\'\)\;/','',$content);exit;}
 
- 	preg_match('/[\w][\w-]*\.(?:com\.cn|net\.cn|com|cn|co|net|org|gov|cc|biz|info)(\/|$)/isU', $_SERVER['SERVER_NAME'], $domain);
 
- 	$domain = $domain[0];
 
- 	if(is_file(__ROOT__.$domain.'.php')){
 
- 		include __ROOT__.$domain.'.php';
 
- 		eval(authcode(base64_decode($code)));
 
- 		$content .=  sha1( $domain.$key['key'])==$key['code'] ? ' defined(\'YP_KEY\') ?  exit : define(\'YP_KEY\',true);' : 'define(\'YP_KEY\',false);';
 
- 	}else{
 
- 		$content .= 'define(\'YP_KEY\',false);';
 
- 	}
 
-     $alias      = include THINK_PATH.'Conf/alias.php';
 
-     $content   .= 'alias_import('.var_export($alias,true).');';
 
-     // 编译框架默认语言包和配置参数
 
-     $content   .= $append."\nL(".var_export(L(),true).");C(".var_export(C(),true).');G(\'loadTime\');Think::Start();';
 
-     file_put_contents(RUNTIME_FILE,strip_whitespace('<?php '.str_replace("defined('THINK_PATH') or exit();",' ',$content)));
 
- }
 
- // 编译系统行为扩展类库
 
- function build_tags_cache() {
 
-     $tags = C('extends');
 
-     $content = '';
 
-     foreach ($tags as $tag=>$item){
 
-         foreach ($item as $key=>$name) {
 
-             $content .= is_int($key)?compile(CORE_PATH.'Behavior/'.$name.'Behavior.class.php'):compile($name);
 
-         }
 
-     }
 
-     return $content;
 
- }
 
- // 创建项目目录结构
 
- function build_app_dir() {
 
-     // 没有创建项目目录的话自动创建
 
-     if(!is_dir(APP_PATH)) mkdir(APP_PATH,0755,true);
 
-     if(is_writeable(APP_PATH)) {
 
-         $dirs  = array(
 
-             LIB_PATH,
 
-             RUNTIME_PATH,
 
-             CONF_PATH,
 
-             COMMON_PATH,
 
-             LANG_PATH,
 
-             CACHE_PATH,
 
-             TMPL_PATH,
 
-             TMPL_PATH.C('DEFAULT_THEME').'/',
 
-             LOG_PATH,
 
-             TEMP_PATH,
 
-             DATA_PATH,
 
-             LIB_PATH.'Model/',
 
-             LIB_PATH.'Action/',
 
-             LIB_PATH.'Behavior/',
 
-             LIB_PATH.'Widget/',
 
-             );
 
-         foreach ($dirs as $dir){
 
-             if(!is_dir($dir))  mkdir($dir,0755,true);
 
-         }
 
-         // 写入目录安全文件
 
-         build_dir_secure($dirs);
 
-         // 写入初始配置文件
 
-         if(!is_file(CONF_PATH.'config.php'))
 
-             file_put_contents(CONF_PATH.'config.php',"<?php\nreturn array(\n\t//'配置项'=>'配置值'\n);\n?>");
 
-         // 写入测试Action
 
-         if(!is_file(LIB_PATH.'Action/IndexAction.class.php'))
 
-             build_first_action();
 
-     }else{
 
-         header('Content-Type:text/html; charset=utf-8');
 
-         exit('项目目录不可写,目录无法自动生成!<BR>请使用项目生成器或者手动生成项目目录~');
 
-     }
 
- }
 
- // 创建测试Action
 
- function build_first_action() {
 
-     $content = file_get_contents(THINK_PATH.'Tpl/default_index.tpl');
 
-     file_put_contents(LIB_PATH.'Action/IndexAction.class.php',$content);
 
- }
 
- // 生成目录安全文件
 
- function build_dir_secure($dirs='') {
 
-     // 目录安全写入
 
-     if(defined('BUILD_DIR_SECURE') && BUILD_DIR_SECURE) {
 
-         defined('DIR_SECURE_FILENAME')  or define('DIR_SECURE_FILENAME',    'index.html');
 
-         defined('DIR_SECURE_CONTENT')   or define('DIR_SECURE_CONTENT',     ' ');
 
-         // 自动写入目录安全文件
 
-         $content = DIR_SECURE_CONTENT;
 
-         $files = explode(',', DIR_SECURE_FILENAME);
 
-         foreach ($files as $filename){
 
-             foreach ($dirs as $dir)
 
-                 file_put_contents($dir.$filename,$content);
 
-         }
 
-     }
 
- }
 
- // 加载运行时所需文件
 
- load_runtime_file();
 
- // 记录加载文件时间
 
- G('loadTime');
 
- // 执行入口
 
- Think::Start();
 
 
  |