心理咨询网
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

init.php 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * @copyright (C)2016-2099 Hnaoyun Inc.
  4. * @author XingMeng
  5. * @email hnxsh@foxmail.com
  6. * @date 2017年2月7日
  7. * 系统环境初始化
  8. */
  9. use core\basic\Config;
  10. use core\basic\Basic;
  11. use core\basic\Check;
  12. // 启动程序时间
  13. define('START_TIME', microtime(true));
  14. // 设置字符集编码、IE文档模式
  15. header('Content-Type:text/html; charset=utf-8');
  16. header('X-UA-Compatible:IE=edge,chrome=1');
  17. header('X-Powered-By:PbootCMS');
  18. // 设置中国时区
  19. date_default_timezone_set('Asia/Shanghai');
  20. // 定义站点虚拟目录(自适应获取多级目录),此处保证DOCUMENT_ROOT、 __DIR__路径的一致性
  21. if (isset($_SERVER['PATH_INFO'])) {
  22. $_SERVER['SCRIPT_NAME'] = preg_replace('{' . $_SERVER['PATH_INFO'] . '$}', '', $_SERVER['SCRIPT_NAME']); // 替换掉PATH_INFO,避免部分服务商路径不对
  23. }
  24. $script_path = explode('/', $_SERVER['SCRIPT_NAME']); // 当前执行文件路径
  25. $file_path = str_replace('\\', '/', dirname(__DIR__)); // 系统部署路径
  26. if (count($script_path) > 2) { // 根目录下"/index.php"长度为2
  27. if (! ! $path_pos = strripos($file_path, '/' . $script_path[1])) {
  28. define('SITE_DIR', substr($file_path, $path_pos));
  29. $_SERVER['SCRIPT_NAME'] = preg_replace('{^' . SITE_DIR . '}i', SITE_DIR, $_SERVER['SCRIPT_NAME']); // 规避大小写URL问题
  30. } else {
  31. define('SITE_DIR', '');
  32. }
  33. } else {
  34. define('SITE_DIR', '');
  35. }
  36. // 定义入口文件地址
  37. $script_dir = dirname($_SERVER['SCRIPT_NAME']);
  38. if ($script_dir == '\\' || $script_dir == '/') {
  39. define('SITE_INDEX_DIR', '');
  40. } else {
  41. define('SITE_INDEX_DIR', dirname($_SERVER['SCRIPT_NAME']));
  42. }
  43. // 定义网站部署根路径
  44. define('ROOT_PATH', $file_path);
  45. // 定义站点物理路径
  46. define('DOC_PATH', preg_replace('{' . SITE_DIR . '$}i', '', ROOT_PATH));
  47. $_SERVER['DOCUMENT_ROOT'] = DOC_PATH; // 统一该环境变量值
  48. // 定义内核文件目录
  49. define('CORE_DIR', SITE_DIR . '/' . basename(__DIR__));
  50. // 定义内核文件物理路径
  51. define('CORE_PATH', DOC_PATH . CORE_DIR);
  52. // 定义应用存放物理路径
  53. define('APP_PATH', ROOT_PATH . '/apps');
  54. // 定义应用文件目录
  55. define('APP_DIR', str_replace(DOC_PATH, '', APP_PATH));
  56. // 定义应用运行文件路径
  57. defined('RUN_PATH') ?: define('RUN_PATH', ROOT_PATH . '/runtime');
  58. // 定义公共配置文件路径
  59. defined('CONF_PATH') ?: define('CONF_PATH', ROOT_PATH . '/config');
  60. // 定义静态文件目录
  61. defined('STATIC_DIR') ?: define('STATIC_DIR', SITE_DIR . '/static');
  62. // 载入基础函数库
  63. require CORE_PATH . '/function/handle.php';
  64. require CORE_PATH . '/function/helper.php';
  65. require CORE_PATH . '/function/file.php';
  66. // 载入基础类文件
  67. require CORE_PATH . '/basic/Basic.php';
  68. // 注册自动加载函数
  69. spl_autoload_register('core\basic\Basic::autoLoad', true, true);
  70. // 设置错误处理函数
  71. set_error_handler('core\basic\Basic::errorHandler');
  72. // 设置异常捕获函数
  73. set_exception_handler('core\basic\Basic::exceptionHandler');
  74. // 注册异常中止函数
  75. register_shutdown_function('core\basic\Basic::shutdownFunction');
  76. // 调试模式设置错误报告级别并进行环境检查
  77. if (Config::get('debug')) {
  78. ini_set('display_errors', 1); // 开启显示错误
  79. error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
  80. } else {
  81. error_reporting(E_ERROR);
  82. }
  83. // 定义版本常量
  84. define('CORE_VERSION', Config::get('core_version'));
  85. define('APP_VERSION', Config::get('app_version'));
  86. define('RELEASE_TIME', Config::get('release_time'));
  87. // 环境检查
  88. Check::checkPHP();//检查php版本
  89. Check::checkApp(); // 检查APP配置
  90. Check::checkBasicDir(); // 检查基础目录
  91. Check::checkSession();//检查session文件夹
  92. Basic::setSessionHandler();// 会话处理程序选择
  93. //添加composer
  94. require ROOT_PATH . '/vendor/autoload.php';