ThinkPHP.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. if(defined('M_DEBUG') && M_DEBUG == 1){
  3. define('APP_DEBUG',true);
  4. }else {
  5. if (isset($_GET['debug']) && $_GET['debug'] === 'tw_debug') {
  6. setcookie('ADBUG','tw_debug',time()+ 60*3600);
  7. exit('ok');
  8. }
  9. if (isset($_COOKIE['ADBUG']) && $_COOKIE['ADBUG'] == 'tw_debug') {
  10. // 开启调试模式
  11. define('APP_DEBUG', true);
  12. } else {
  13. // 开启调试模式
  14. define('APP_DEBUG', true);
  15. }
  16. }
  17. function getChmod($filepath)
  18. {
  19. return substr(base_convert(@fileperms($filepath), 10, 8), -4);
  20. }
  21. function reChmod($path, $filePerm = 0644, $dirPerm = 0755)
  22. {
  23. if (!file_exists($path)) {
  24. return false;
  25. }
  26. if (is_file($path)) {
  27. chmod($path, $filePerm);
  28. } elseif (is_dir($path)) {
  29. $foldersAndFiles = scandir($path);
  30. $entries = array_slice($foldersAndFiles, 2);
  31. foreach ($entries as $entry) {
  32. reChmod($path . "/" . $entry, $filePerm, $dirPerm);
  33. }
  34. chmod($path, $dirPerm);
  35. }
  36. return true;
  37. }
  38. try {
  39. // 记录开始运行时间
  40. $GLOBALS['_beginTime'] = microtime(true);
  41. // 记录内存初始使用
  42. define('MEMORY_LIMIT_ON', function_exists('memory_get_usage'));
  43. if (MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();
  44. // 版本信息
  45. define('THINK_VERSION','3.2.3');
  46. // URL 模式定义
  47. define('URL_COMMON',0); //普通模式
  48. define('URL_PATHINFO',1); //PATHINFO模式
  49. define('URL_REWRITE',2); //REWRITE模式
  50. define('URL_COMPAT',3); // 兼容模式
  51. // 类文件后缀
  52. define('EXT','.class.php');
  53. // 系统常量定义
  54. defined('THINK_PATH') or define('THINK_PATH', __DIR__ . '/');
  55. defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . '/');
  56. defined('APP_STATUS') or define('APP_STATUS', ''); // 应用状态 加载对应的配置文件
  57. defined('APP_DEBUG') or define('APP_DEBUG', true); // 是否调试模式
  58. if (function_exists('saeAutoLoader')) {// 自动识别SAE环境
  59. defined('APP_MODE') or define('APP_MODE', 'sae');
  60. defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'Sae');
  61. } else {
  62. defined('APP_MODE') or define('APP_MODE', 'common'); // 应用模式 默认为普通模式
  63. defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'File'); // 存储类型 默认为File
  64. }
  65. defined('RUNTIME_PATH') or define('RUNTIME_PATH', APP_PATH . 'Runtime/'); // 系统运行时目录
  66. defined('LIB_PATH') or define('LIB_PATH', realpath(THINK_PATH . 'Library') . '/'); // 系统核心类库目录
  67. defined('CORE_PATH') or define('CORE_PATH', LIB_PATH . 'Think/'); // Think类库目录
  68. defined('BEHAVIOR_PATH') or define('BEHAVIOR_PATH', LIB_PATH . 'Behavior/'); // 行为类库目录
  69. defined('MODE_PATH') or define('MODE_PATH', THINK_PATH . 'Mode/'); // 系统应用模式目录
  70. defined('VENDOR_PATH') or define('VENDOR_PATH', LIB_PATH . 'Vendor/'); // 第三方类库目录
  71. defined('COMMON_PATH') or define('COMMON_PATH', APP_PATH . 'Common/'); // 应用公共目录
  72. defined('CONF_PATH') or define('CONF_PATH', COMMON_PATH . 'Conf/'); // 应用配置目录
  73. defined('LANG_PATH') or define('LANG_PATH', COMMON_PATH . 'Lang/'); // 应用语言目录
  74. defined('HTML_PATH') or define('HTML_PATH', APP_PATH . 'Html/'); // 应用静态目录
  75. defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'T22aog5231a2cba8d7766fc3as/'); // 应用日志目录
  76. defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'Temp/'); // 应用缓存目录
  77. defined('DATA_PATH') or define('DATA_PATH', RUNTIME_PATH . 'Data/'); // 应用数据目录
  78. defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'Cache/'); // 应用模板缓存目录
  79. defined('CONF_EXT') or define('CONF_EXT', '.php'); // 配置文件后缀
  80. defined('CONF_PARSE') or define('CONF_PARSE', ''); // 配置文件解析方法
  81. defined('ADDON_PATH') or define('ADDON_PATH', APP_PATH . 'Addon');
  82. // 系统信息
  83. if (version_compare(PHP_VERSION, '5.4.0', '<')) {
  84. ini_set('magic_quotes_runtime', 0);
  85. define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc() ? true : false);
  86. } else {
  87. define('MAGIC_QUOTES_GPC', false);
  88. }
  89. define('IS_CGI', (0 === strpos(PHP_SAPI, 'cgi') || false !== strpos(PHP_SAPI, 'fcgi')) ? 1 : 0);
  90. define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0);
  91. define('IS_CLI', PHP_SAPI == 'cli' ? 1 : 0);
  92. if (!IS_CLI) {
  93. // 当前文件名
  94. if (!defined('_PHP_FILE_')) {
  95. if (IS_CGI) {
  96. //CGI/FASTCGI模式下
  97. $_temp = explode('.php', $_SERVER['PHP_SELF']);
  98. define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'], '', $_temp[0] . '.php'), '/'));
  99. } else {
  100. define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'], '/'));
  101. }
  102. }
  103. if (!defined('__ROOT__')) {
  104. $_root = rtrim(dirname(_PHP_FILE_), '/');
  105. define('__ROOT__', (($_root == '/' || $_root == '\\') ? '' : $_root));
  106. }
  107. }
  108. // 加载核心Think类
  109. require CORE_PATH . 'Think' . EXT;
  110. // 应用初始化
  111. Think\Think::start();
  112. } catch (Exception $exception) {
  113. send_http_status(404);
  114. $string = file_get_contents('./404.html');
  115. $string = str_replace('$ERROR_MESSAGE', $exception->getMessage(), $string);
  116. $string = str_replace('HTTP_HOST', 'http://' . $_SERVER['HTTP_HOST'], $string);
  117. echo $string;
  118. }
  119. ?>