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); } }
/** * 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'); }
/** * 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); } }
/** * 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; }
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; } }
/** * 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; }
$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() {
/** * @desc Disables the debug mode */ public static function disable_debug_mode() { self::$enabled = false; self::$options = array(); self::write_debug_file(); }
<?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; }