Init.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace PhpLife\Frame;
  3. // 引入全局常量
  4. require_once dirname(__DIR__) . '/constants.php';
  5. // 引入全局函数
  6. require_once dirname(__DIR__) . '/functions.php';
  7. // 引入自动加载
  8. require_once dirname(__DIR__) . '/Autoload.php';
  9. class Init
  10. {
  11. /**
  12. * 环境变量设置
  13. * @param $configFile
  14. * @return bool
  15. */
  16. public static function setEnvironment($configFile = '')
  17. {
  18. // 设置错误显示
  19. error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT);
  20. ini_set('display_errors', false);
  21. // 无需浏览器缓存
  22. header("Cache-Control: no-cache, must-revalidate");
  23. header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
  24. // 设置时区和编码
  25. date_default_timezone_set('Asia/Shanghai');
  26. setlocale(LC_ALL, 'en_US.utf-8');
  27. header('Content-type:text/html;charset=utf-8');
  28. // 设置错误捕获机制
  29. set_error_handler('\PhpLife\Frame\Init::errorHandler');
  30. set_exception_handler('\PhpLife\Frame\Init::exceptionHandler');
  31. // 如果没有附加配置文件的话则可以结束配置了,反之,则要重新设置一些变量
  32. if (!$configFile || !file_exists($configFile)) {
  33. return true;
  34. }
  35. // 解析配置文件
  36. $config = parse_ini_file($configFile);
  37. if (!$config) {
  38. return true;
  39. }
  40. // 调整错误显示
  41. if (isset($config['display_errors'])) {
  42. ini_set('display_errors', intval($config['display_errors']));
  43. }
  44. // 设置日志路径
  45. if (isset($config['log_path'])) {
  46. Logger::setLogPath($config['log_path']);
  47. }
  48. // 设置日志等级
  49. if (isset($config['log_level'])) {
  50. Logger::setLogLevel(intval($config['log_level']));
  51. }
  52. // 设置环境变量
  53. if (isset($config['mode'])) {
  54. Request::setMode($config['mode']);
  55. }
  56. return true;
  57. }
  58. /**
  59. * 异常捕获
  60. * @param $ex
  61. */
  62. public static function exceptionHandler($ex)
  63. {
  64. Logger::error($ex, 'uncaught_exception');
  65. }
  66. /**
  67. * 错误捕获
  68. * @param $errorCode
  69. * @param $errorMessage
  70. * @param $errorFile
  71. * @param $errorLine
  72. * @return bool
  73. */
  74. public static function errorHandler($errorCode, $errorMessage, $errorFile, $errorLine)
  75. {
  76. // 忽略notice错误
  77. if (in_array($errorCode, array(E_STRICT))) {
  78. return;
  79. }
  80. $trace = debug_backtrace();
  81. $data = array('code' => $errorCode, 'message' => $errorMessage, 'file' => $errorFile, 'line' => $errorLine, 'trace' => $trace);
  82. Logger::debug($data, 'uncaught_error', $errorCode);
  83. }
  84. }