示例#1
0
 public static function build()
 {
     self::$enabled = $GLOBALS['config']['DEBUG']['enabled'];
     self::$out = $GLOBALS['config']['DEBUG']['out'];
     self::$outfile = $GLOBALS['config']['DEBUG']['outfile'];
     self::$verbosity = $GLOBALS['config']['DEBUG']['verbosity'];
     if (self::$enabled && !is_writable(self::$outfile) && (self::$out === "file" || self::$out === "both")) {
         self::$out = "stdout";
         self::write("Debug outfile is not writable. Switching back to stdout", 0);
     }
     if (self::$enabled === true) {
         self::write(date('Ymd-Gis - ') . "Debug mode enabled. Use in development env. only!", 0);
     }
 }
示例#2
0
 /**
  * Método para apresentar a página de erro. Mata execução
  * @param	int		$number		número do erro HTTP
  * @param	string	$message	mensagem do erro
  * @param	string	$file		endereço completo do arquivo em que ocorreu o erro
  * @param	int		$line		número da linha em que ocorreu o erro
  * @param	string	$trace		trilha de arquivo antes de ocorrer o erro
  * @param	string	$details	detalhes do erro, apresenta o trecho do arquivo em que ocorreu o erro
  * @return	void
  */
 public static function render($number, $message, $file, $line, $trace = null, $details = null)
 {
     if (Debug::enabled()) {
         return require_once root . 'core/error/debug.php';
     }
     $files = array();
     $files[0] = root . 'app/views/_error/' . $number . '.php';
     $files[1] = root . 'core/error/' . $number . '.php';
     foreach ($files as $f) {
         if (file_exists($f)) {
             return require_once $f;
         }
     }
     exit('error');
 }
示例#3
0
 /**
  * Enables displaying or logging errors and exceptions.
  * @param  bool          enable production mode? (NULL means autodetection)
  * @param  string        error log file (FALSE disables logging in production mode)
  * @param  array|string  administrator email or email headers; enables email sending in production mode
  * @return void
  */
 public static function enable($productionMode = NULL, $logFile = NULL, $email = NULL)
 {
     if (version_compare(PHP_VERSION, '5.2.1') === 0) {
         throw new NotSupportedException(__METHOD__ . ' is not supported in PHP 5.2.1');
         // PHP bug #40815
     }
     error_reporting(E_ALL | E_STRICT);
     // production/development mode detection
     if (is_bool($productionMode)) {
         self::$productionMode = $productionMode;
     }
     if (self::$productionMode === self::DETECT) {
         if (class_exists('Environment')) {
             self::$productionMode = Environment::isProduction();
         } elseif (isset($_SERVER['SERVER_ADDR']) || isset($_SERVER['LOCAL_ADDR'])) {
             // IP address based detection
             $addr = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR'];
             $oct = explode('.', $addr);
             self::$productionMode = $addr !== '::1' && (count($oct) !== 4 || $oct[0] !== '10' && $oct[0] !== '127' && ($oct[0] !== '172' || $oct[1] < 16 || $oct[1] > 31) && ($oct[0] !== '169' || $oct[1] !== '254') && ($oct[0] !== '192' || $oct[1] !== '168'));
         } else {
             self::$productionMode = !self::$consoleMode;
         }
     }
     // logging configuration
     if (self::$productionMode && $logFile !== FALSE) {
         self::$logFile = 'log/php_error.log';
         if (class_exists('Environment')) {
             if (is_string($logFile)) {
                 self::$logFile = Environment::expand($logFile);
             } else {
                 try {
                     self::$logFile = Environment::expand('%logDir%/php_error.log');
                 } catch (InvalidStateException $e) {
                 }
             }
         } elseif (is_string($logFile)) {
             self::$logFile = $logFile;
         }
         ini_set('error_log', self::$logFile);
     }
     // php configuration
     if (function_exists('ini_set')) {
         ini_set('display_errors', !self::$productionMode);
         // or 'stderr'
         ini_set('html_errors', !self::$consoleMode);
         ini_set('log_errors', (bool) self::$logFile);
     } elseif (ini_get('log_errors') != (bool) self::$logFile || ini_get('display_errors') != !self::$productionMode && ini_get('display_errors') !== (self::$productionMode ? 'stderr' : 'stdout')) {
         throw new NotSupportedException('Function ini_set() must be enabled.');
     }
     self::$sendEmails = $logFile && $email;
     if (self::$sendEmails) {
         if (is_string($email)) {
             self::$emailHeaders['To'] = $email;
         } elseif (is_array($email)) {
             self::$emailHeaders = $email + self::$emailHeaders;
         }
     }
     if (!defined('E_DEPRECATED')) {
         define('E_DEPRECATED', 8192);
     }
     if (!defined('E_USER_DEPRECATED')) {
         define('E_USER_DEPRECATED', 16384);
     }
     set_exception_handler(array(__CLASS__, 'exceptionHandler'));
     set_error_handler(array(__CLASS__, 'errorHandler'));
     register_shutdown_function(array(__CLASS__, 'shutdownHandler'));
     self::$enabled = TRUE;
     if (is_int($productionMode)) {
         // back compatibility
         //trigger_error('Debug::enable($errorLevel) is deprecated; Remove $errorLevel parameter.', E_USER_WARNING);
     }
 }
示例#4
0
 /**
  * Enables displaying or logging errors and exceptions.
  * @param  mixed         production, development mode, autodetection or IP address(es).
  * @param  string        error log file (FALSE disables logging in production mode)
  * @param  array|string  administrator email or email headers; enables email sending in production mode
  * @return void
  */
 public static function enable($mode = NULL, $logFile = NULL, $email = NULL)
 {
     error_reporting(E_ALL | E_STRICT);
     // production/development mode detection
     if (is_bool($mode)) {
         self::$productionMode = $mode;
     } elseif (is_string($mode)) {
         // IP adresses
         $mode = preg_split('#[,\\s]+#', $mode);
     }
     if (is_array($mode)) {
         // IP adresses
         self::$productionMode = !isset($_SERVER['REMOTE_ADDR']) || !in_array($_SERVER['REMOTE_ADDR'], $mode, TRUE);
     }
     if (self::$productionMode === self::DETECT) {
         if (class_exists('Environment')) {
             self::$productionMode = Environment::isProduction();
         } elseif (isset($_SERVER['SERVER_ADDR']) || isset($_SERVER['LOCAL_ADDR'])) {
             // IP address based detection
             $addr = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR'];
             $oct = explode('.', $addr);
             self::$productionMode = $addr !== '::1' && (count($oct) !== 4 || $oct[0] !== '10' && $oct[0] !== '127' && ($oct[0] !== '172' || $oct[1] < 16 || $oct[1] > 31) && ($oct[0] !== '169' || $oct[1] !== '254') && ($oct[0] !== '192' || $oct[1] !== '168'));
         } else {
             self::$productionMode = !self::$consoleMode;
         }
     }
     // logging configuration
     if (self::$productionMode && $logFile !== FALSE) {
         self::$logFile = 'log/php_error.log';
         if (class_exists('Environment')) {
             if (is_string($logFile)) {
                 self::$logFile = Environment::expand($logFile);
             } else {
                 try {
                     self::$logFile = Environment::expand('%logDir%/php_error.log');
                 } catch (InvalidStateException $e) {
                 }
             }
         } elseif (is_string($logFile)) {
             self::$logFile = $logFile;
         }
         ini_set('error_log', self::$logFile);
     }
     // php configuration
     if (function_exists('ini_set')) {
         ini_set('display_errors', !self::$productionMode);
         // or 'stderr'
         ini_set('html_errors', !self::$logFile && !self::$consoleMode);
         ini_set('log_errors', FALSE);
     } elseif (ini_get('display_errors') != !self::$productionMode && ini_get('display_errors') !== (self::$productionMode ? 'stderr' : 'stdout')) {
         // intentionally ==
         throw new NotSupportedException('Function ini_set() must be enabled.');
     }
     self::$sendEmails = self::$logFile && $email;
     if (self::$sendEmails) {
         if (is_string($email)) {
             self::$emailHeaders['To'] = $email;
         } elseif (is_array($email)) {
             self::$emailHeaders = $email + self::$emailHeaders;
         }
     }
     if (!defined('E_DEPRECATED')) {
         define('E_DEPRECATED', 8192);
     }
     if (!defined('E_USER_DEPRECATED')) {
         define('E_USER_DEPRECATED', 16384);
     }
     register_shutdown_function(array(__CLASS__, '_shutdownHandler'));
     set_exception_handler(array(__CLASS__, '_exceptionHandler'));
     set_error_handler(array(__CLASS__, '_errorHandler'));
     self::$enabled = TRUE;
 }
示例#5
0
文件: Debug.php 项目: kravco/dibi
 public static function enable($mode = NULL, $logDirectory = NULL, $email = NULL)
 {
     error_reporting(E_ALL | E_STRICT);
     if (is_bool($mode)) {
         self::$productionMode = $mode;
     } elseif (is_string($mode)) {
         $mode = preg_split('#[,\\s]+#', "{$mode} 127.0.0.1 ::1");
     }
     if (is_array($mode)) {
         self::$productionMode = !isset($_SERVER['REMOTE_ADDR']) || !in_array($_SERVER['REMOTE_ADDR'], $mode, TRUE);
     }
     if (self::$productionMode === self::DETECT) {
         if (class_exists('Environment')) {
             self::$productionMode = Environment::isProduction();
         } elseif (isset($_SERVER['SERVER_ADDR']) || isset($_SERVER['LOCAL_ADDR'])) {
             $addrs = array();
             if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                 $addrs = preg_split('#,\\s*#', $_SERVER['HTTP_X_FORWARDED_FOR']);
             }
             if (isset($_SERVER['REMOTE_ADDR'])) {
                 $addrs[] = $_SERVER['REMOTE_ADDR'];
             }
             $addrs[] = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR'];
             self::$productionMode = FALSE;
             foreach ($addrs as $addr) {
                 $oct = explode('.', $addr);
                 if ($addr !== '::1' && (count($oct) !== 4 || $oct[0] !== '10' && $oct[0] !== '127' && ($oct[0] !== '172' || $oct[1] < 16 || $oct[1] > 31) && ($oct[0] !== '169' || $oct[1] !== '254') && ($oct[0] !== '192' || $oct[1] !== '168'))) {
                     self::$productionMode = TRUE;
                     break;
                 }
             }
         } else {
             self::$productionMode = !self::$consoleMode;
         }
     }
     if (is_string($logDirectory) || $logDirectory === FALSE) {
         self::$logDirectory = $logDirectory;
     } else {
         self::$logDirectory = defined('APP_DIR') ? APP_DIR . '/../log' : getcwd() . '/log';
     }
     if (self::$logDirectory) {
         ini_set('error_log', self::$logDirectory . '/php_error.log');
     }
     if (function_exists('ini_set')) {
         ini_set('display_errors', !self::$productionMode);
         ini_set('html_errors', FALSE);
         ini_set('log_errors', FALSE);
     } elseif (ini_get('display_errors') != !self::$productionMode && ini_get('display_errors') !== (self::$productionMode ? 'stderr' : 'stdout')) {
         throw new NotSupportedException('Function ini_set() must be enabled.');
     }
     if ($email) {
         if (!is_string($email)) {
             throw new InvalidArgumentException('E-mail address must be a string.');
         }
         self::$email = $email;
     }
     if (!defined('E_DEPRECATED')) {
         define('E_DEPRECATED', 8192);
     }
     if (!defined('E_USER_DEPRECATED')) {
         define('E_USER_DEPRECATED', 16384);
     }
     if (!self::$enabled) {
         register_shutdown_function(array(__CLASS__, '_shutdownHandler'));
         set_exception_handler(array(__CLASS__, '_exceptionHandler'));
         set_error_handler(array(__CLASS__, '_errorHandler'));
         self::$enabled = TRUE;
     }
 }
示例#6
0
 /**
  * Enables displaying or logging errors and exceptions.
  * @param  int   error reporting level
  * @param  bool|string  log to file?
  * @param  array|string  send emails?
  * @return void
  */
 public static function enable($level = E_ALL, $logErrors = NULL, $sendEmails = FALSE)
 {
     if (version_compare(PHP_VERSION, '5.2.1') === 0) {
         throw new NotSupportedException(__METHOD__ . ' is not supported in PHP 5.2.1');
         // PHP bug #40815
     }
     // Environment auto-detection
     if ($logErrors === NULL && class_exists('Environment')) {
         $logErrors = Environment::isLive();
     }
     // Firebug detection
     if (self::$useFirebug === NULL) {
         self::$useFirebug = function_exists('json_encode') && !$logErrors && isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP/');
     }
     if ($level !== NULL) {
         error_reporting($level);
     }
     if (function_exists('ini_set')) {
         ini_set('display_startup_errors', !$logErrors);
         ini_set('display_errors', !$logErrors);
         // or 'stderr'
         ini_set('html_errors', self::$html);
         ini_set('log_errors', (bool) $logErrors);
     } elseif ($logErrors) {
         // throws error only on production server
         throw new NotSupportedException('Function ini_set() is not enabled.');
     }
     if ($logErrors) {
         if (is_string($logErrors)) {
             self::$logFile = strpos($logErrors, '%') === FALSE ? $logErrors : Environment::expand($logErrors);
         } else {
             try {
                 self::$logFile = Environment::expand('%logDir%/php_error.log');
             } catch (InvalidStateException $e) {
                 self::$logFile = 'php_error.log';
             }
         }
         ini_set('error_log', self::$logFile);
     }
     self::$sendEmails = $logErrors && $sendEmails;
     if (self::$sendEmails) {
         if (is_string($sendEmails)) {
             self::$emailHeaders['To'] = $sendEmails;
         } elseif (is_array($sendEmails)) {
             self::$emailHeaders = $sendEmails + self::$emailHeaders;
         }
         if (mt_rand() / mt_getrandmax() < self::$emailProbability) {
             self::observeErrorLog();
         }
     }
     if (!defined('E_RECOVERABLE_ERROR')) {
         define('E_RECOVERABLE_ERROR', 4096);
     }
     if (!defined('E_DEPRECATED')) {
         define('E_DEPRECATED', 8192);
     }
     set_exception_handler(array(__CLASS__, 'exceptionHandler'));
     set_error_handler(array(__CLASS__, 'errorHandler'));
     self::$enabled = TRUE;
 }
示例#7
0
        $key = 'Trilado.Annotation.Property.' . $this->classname . '->' . $property;
        $cache = Cache::factory();
        if (Debug::enabled() && $cache->has($key)) {
            return $cache->read($key);
        } else {
            $reflection = new ReflectionProperty($this->classname, $property);
            $comment = $reflection->getDocComment();
            $annotation = $this->extractAnnotation($comment);
            $cache->write($key, $annotation, CACHE_TIME);
            return $annotation;
        }
    }
    /**
	 * Pega a anotação todas as propriedades da classe
	 * @return	array	lista com instâncias de sdtClass
	 */
    public function getProperties()
    {
示例#8
0
 /**
  * @desc Disables the debug mode
  */
 public static function disable_debug_mode()
 {
     self::$enabled = false;
     self::$options = array();
     self::write_debug_file();
 }
示例#9
0
文件: init.php 项目: jankuca/escms
<?php

require_once './app/config.php';
header('Content-Type: text/html; charset=' . ESCMS_OUTPUT_ENCODING);
require_once './app/layers/debug.layer.php';
set_exception_handler(array('Debug', 'catchException'));
set_error_handler(array('Debug', 'catchError'));
date_default_timezone_set(ESCMS_TIMEZONE);
Debug::$enabled = ESCMS_DEBUG_ENABLE;
require_once './app/layers/lib.layer.php';
require_once './app/layers/dal.layer.php';
require_once './app/layers/tpl.layer.php';
require_once './app/layers/core.layer.php';
Lib::$dirpath = ESCMS_PATH_LIB;
SQL::$dirpath = ESCMS_PATH_DAL_DRIVERS;
TPL::$dirpath = ESCMS_PATH_TPL . 'looksmog/';
# replace! -> db
TPL::add('SITE_ROOT_PATH', SITE_ROOT_PATH);
switch (ESCMS_DB_TYPE) {
    case 'sqlite2':
        $params = array('file' => ESCMS_DB_FILE);
        break;
}
SQL::openConnection(array('type' => ESCMS_DB_TYPE, 'prefix' => ESCMS_DB_PREFIX, 'params' => $params));
if (defined('REQUEST_RAW') && !defined('REDIRECTED')) {
    $e = explode(SITE_ROOT_PATH, 'http://' . $_SERVER['HTTP_HOST'] . REQUEST_RAW, 2);
    TPL::add('PAGE_URI', SITE_ROOT_PATH . $e[1]);
    define('REQUEST', '/' . end($e));
    require_once './app/resolve.php';
    die;
} else {
 /**
  * Disables debug checking
  * 
  * @return void
  */
 public static function disable()
 {
     self::$enabled = false;
 }