static function accumulatorStop($key, $recursive = false) { if (!eZDebug::isDebugEnabled()) { return; } $stopTime = microtime(true); $debug = eZDebug::instance(); $key = $key === false ? 'Default Debug-Accumulator' : $key; if (!array_key_exists($key, $debug->TimeAccumulatorList)) { eZDebug::writeWarning("Accumulator '{$key}' does not exist, run eZDebug::accumulatorStart first", __METHOD__); return; } $accumulator = $debug->TimeAccumulatorList[$key]; if ($recursive) { if (isset($accumulator['recursive_counter'])) { if ($accumulator['recursive_counter'] > 0) { $accumulator['recursive_counter']--; return; } } } $diffTime = $stopTime - $accumulator['temp_time']; $accumulator['time'] = $accumulator['time'] + $diffTime; ++$accumulator['count']; $debug->TimeAccumulatorList[$key] = $accumulator; }
function shutdown($exitCode = false, $exitText = false) { $cli = eZCLI::instance(); if (class_exists('eZDB') and eZDB::hasInstance()) { $db = eZDB::instance(false, array('show_errors' => false)); // Perform transaction check $transactionCounterCheck = eZDB::checkTransactionCounter(); if (isset($transactionCounterCheck['error'])) { $cli->error($transactionCounterCheck['error']); } if ($this->UseSession and $db->isConnected()) { eZUser::logoutCurrent(); eZSession::remove(); } } $webOutput = $cli->isWebOutput(); if ($this->UseDebugOutput or eZDebug::isDebugEnabled()) { if ($this->DebugMessage) { fputs(STDERR, $this->DebugMessage); } fputs(STDERR, eZDebug::printReport(false, $webOutput, true, $this->AllowedDebugLevels, $this->UseDebugAccumulators, $this->UseDebugTimingPoints, $this->UseIncludeFiles)); } eZExecution::cleanup(); eZExecution::setCleanExit(); $this->setIsInitialized(false); if ($exitCode !== false) { $this->ExitCode = $exitCode; } if ($this->ExitCode !== false) { if ($exitText !== false) { $cli->output($exitText); } exit($this->ExitCode); } }
/** * Installs the default Exception handler * * @params Exception the exception * @return void */ static public function defaultExceptionHandler( Exception $e ) { if( PHP_SAPI != 'cli' ) { header( 'HTTP/1.x 500 Internal Server Error' ); header( 'Content-Type: text/html' ); echo "An unexpected error has occurred. Please contact the webmaster.<br />"; if( eZDebug::isDebugEnabled() ) { echo $e->getMessage() . ' in ' . $e->getFile() . ' on line ' . $e->getLine(); } } else { $cli = eZCLI::instance(); $cli->error( "An unexpected error has occurred. Please contact the webmaster."); if( eZDebug::isDebugEnabled() ) { $cli->error( $e->getMessage() . ' in ' . $e->getFile() . ' on line ' . $e->getLine() ); } } eZLog::write( 'Unexpected error, the message was : ' . $e->getMessage() . ' in ' . $e->getFile() . ' on line ' . $e->getLine(), 'error.log' ); eZExecution::cleanup(); eZExecution::setCleanExit(); exit( 1 ); }
/** * Constructs an ezpKernel instance */ public function __construct(array $settings = array()) { $this->settings = $settings + array('siteaccess' => null, 'use-exceptions' => false, 'session' => null); unset($settings); require_once __DIR__ . '/global_functions.php'; $this->setUseExceptions($this->settings['use-exceptions']); $GLOBALS['eZSiteBasics'] = array('external-css' => true, 'show-page-layout' => true, 'module-run-required' => true, 'policy-check-required' => true, 'policy-check-omit-list' => array(), 'url-translator-allowed' => true, 'validity-check-required' => false, 'user-object-required' => true, 'session-required' => true, 'db-required' => false, 'no-cache-adviced' => false, 'site-design-override' => false, 'module-repositories' => array()); $this->siteBasics =& $GLOBALS['eZSiteBasics']; // Reads settings from i18n.ini and passes them to eZTextCodec. list($i18nSettings['internal-charset'], $i18nSettings['http-charset'], $i18nSettings['mbstring-extension']) = eZINI::instance('i18n.ini')->variableMulti('CharacterSettings', array('Charset', 'HTTPCharset', 'MBStringExtension'), array(false, false, 'enabled')); eZTextCodec::updateSettings($i18nSettings); // @todo Change so code only supports utf-8 in 5.0? // Initialize debug settings. eZUpdateDebugSettings(); // Set the different permissions/settings. $ini = eZINI::instance(); // Set correct site timezone $timezone = $ini->variable("TimeZoneSettings", "TimeZone"); if ($timezone) { date_default_timezone_set($timezone); } list($iniFilePermission, $iniDirPermission) = $ini->variableMulti('FileSettings', array('StorageFilePermissions', 'StorageDirPermissions')); // OPTIMIZATION: // Sets permission array as global variable, this avoids the eZCodePage include $GLOBALS['EZCODEPAGEPERMISSIONS'] = array('file_permission' => octdec($iniFilePermission), 'dir_permission' => octdec($iniDirPermission), 'var_directory' => eZSys::cacheDirectory()); unset($i18nSettings, $timezone, $iniFilePermission, $iniDirPermission); eZExecution::addCleanupHandler(function () { if (class_exists('eZDB', false) && eZDB::hasInstance()) { eZDB::instance()->setIsSQLOutputEnabled(false); } }); eZExecution::addFatalErrorHandler(function () { header("HTTP/1.1 500 Internal Server Error"); echo "<b>Fatal error</b>: The web server did not finish its request<br/>"; if (ini_get('display_errors') == 1) { if (eZDebug::isDebugEnabled()) { echo "<p>The execution of eZ Publish was abruptly ended, the debug output is present below.</p>"; } else { echo "<p>Debug information can be found in the log files normally placed in var/log/* or by enabling 'DebugOutput' in site.ini</p>"; } } else { echo "<p>Contact website owner with current url and info on what you did, and owner will be able to debug the issue further (by enabling 'display_errors' in php.ini).</p>"; } eZDisplayResult(null); }); eZExecution::setCleanExit(); // Enable this line to get eZINI debug output // eZINI::setIsDebugEnabled( true ); // Enable this line to turn off ini caching // eZINI::setIsCacheEnabled( false); if ($ini->variable('RegionalSettings', 'Debug') === 'enabled') { eZLocale::setIsDebugEnabled(true); } eZDebug::setHandleType(eZDebug::HANDLE_FROM_PHP); $GLOBALS['eZGlobalRequestURI'] = eZSys::serverVariable('REQUEST_URI'); // Initialize basic settings, such as vhless dirs and separators eZSys::init('index.php', $ini->variable('SiteAccessSettings', 'ForceVirtualHost') === 'true'); // Check for extension eZExtension::activateExtensions('default'); // Extension check end // Use injected siteaccess if available or match it internally. $this->access = isset($this->settings['siteaccess']) ? $this->settings['siteaccess'] : eZSiteAccess::match(eZURI::instance(eZSys::requestURI()), eZSys::hostname(), eZSys::serverPort(), eZSys::indexFile()); eZSiteAccess::change($this->access); eZDebugSetting::writeDebug('kernel-siteaccess', $this->access, 'current siteaccess'); // Check for siteaccess extension eZExtension::activateExtensions('access'); // Siteaccess extension check end // Now that all extensions are activated and siteaccess has been changed, reset // all eZINI instances as they may not take into account siteaccess specific settings. eZINI::resetAllInstances(false); ezpEvent::getInstance()->registerEventListeners(); $this->mobileDeviceDetect = new ezpMobileDeviceDetect(ezpMobileDeviceDetectFilter::getFilter()); if ($this->mobileDeviceDetect->isEnabled()) { $this->mobileDeviceDetect->process(); if ($this->mobileDeviceDetect->isMobileDevice()) { $this->mobileDeviceDetect->redirect(); } } // eZSession::setSessionArray( $mainRequest->session ); /** * Check for activating Debug by user ID (Final checking. The first was in eZDebug::updateSettings()) * @uses eZUser::instance() So needs to be executed after eZSession::start()|lazyStart() */ eZDebug::checkDebugByUser(); }
function eZFatalError() { header("HTTP/1.1 500 Internal Server Error"); print "<b>Fatal error</b>: The web server did not finish its request<br/>"; if (ini_get('display_errors') == 1) { if (eZDebug::isDebugEnabled()) { print "<p>The execution of eZ Publish was abruptly ended, the debug output is present below.</p>"; } else { print "<p>Debug information can be found in the log files normally placed in var/log/* or by enabling 'DebugOutput' in site.ini</p>"; } } else { print "<p>Contact website owner with current url and info on what you did, and owner will be able to debug the issue further (by enabling 'display_errors' in php.ini).</p>"; } $templateResult = null; eZDisplayResult($templateResult); }
<?php /* @type $Params string[] */ $outputType = 'json'; $controller = BlockFactory::factory ( $Params, $outputType ); try { $controller->buildResult (); $Result = $controller->getResult(); } catch ( Exception $e ) { $Result = $controller->getResult(); $statusReason = HttpTool::$statusReason[$Result['error_status']]; header("{$_SERVER['SERVER_PROTOCOL']} {$Result['error_status']} {$statusReason}"); } echo $Result; SessionTool::flush(); flush(); if(!eZDebug::isDebugEnabled()) { eZExecution::cleanExit(); }
private function setupFatalErrorHandler() { $errorINI = eZINI::instance('error.ini'); if ($errorINI->hasVariable('ErrorSettings-kernel', 'FatalErrorHandler') && is_callable($errorINI->variable('ErrorSettings-kernel', 'FatalErrorHandler'))) { eZExecution::addFatalErrorHandler($errorINI->variable('ErrorSettings-kernel', 'FatalErrorHandler')); } else { eZExecution::addFatalErrorHandler(function () { header("HTTP/1.1 500 Internal Server Error"); echo "<b>Fatal error</b>: The web server did not finish its request<br/>"; if (ini_get('display_errors') == 1) { if (eZDebug::isDebugEnabled()) { echo "<p>The execution of eZ Publish was abruptly ended, the debug output is present below.</p>"; } else { echo "<p>Debug information can be found in the log files normally placed in var/log/* or by enabling 'DebugOutput' in site.ini</p>"; } } else { echo "<p>Contact website owner with current url and info on what you did, and owner will be able to debug the issue further (by enabling 'display_errors' in php.ini).</p>"; } eZDisplayResult(null); }); } eZExecution::setCleanExit(); }
static function isDebugEnabled() { return eZDebug::isDebugEnabled(); }