\__/
(xx)
//||\\\\

Erreur fatale

Une erreur fatale s\'est produite à l\'exécution de Garradin. Pour rapporter ce bug merci d\'inclure le message ci-dessous :

'); ini_set('error_append_string', '


Comment rapporter un bug

'); } } /* * Gestion des erreurs et exceptions */ class UserException extends \LogicException { } function exception_error_handler($errno, $errstr, $errfile, $errline ) { // For @ ignored errors if (error_reporting() === 0) return; throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); } function exception_handler($e) { if ($e instanceOf UserException || $e instanceOf miniSkelMarkupException) { try { if (PHP_SAPI == 'cli') { echo $e->getMessage(); } else { $tpl = Template::getInstance(); $tpl->assign('error', $e->getMessage()); $tpl->display('error.tpl'); } exit; } catch (Exception $e) { } } $file = str_replace(ROOT, '', $e->getFile()); $error = "Exception of type ".get_class($e)." happened !\n\n". $e->getCode()." - ".$e->getMessage()."\n\nIn: ". $file . ":" . $e->getLine()."\n\n"; if (!empty($_SERVER['HTTP_HOST']) && !empty($_SERVER['REQUEST_URI'])) $error .= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n\n"; $error .= $e->getTraceAsString(); $error .= "\n-------------\n"; $error .= 'Garradin version: ' . garradin_version() . "\n"; $error .= 'Garradin manifest: ' . garradin_manifest() . "\n"; $error .= 'PHP version: ' . phpversion() . "\n"; foreach ($_SERVER as $key=>$value) { if (is_array($value)) $value = json_encode($value); $error .= $key . ': ' . $value . "\n"; } $error = str_replace("\r", '', $error); error_log($error); if (MAIL_ERRORS) { mail(MAIL_ERRORS, '[Garradin] Erreur d\'exécution', $error, 'From: "' . WWW_URL . '" '); } if (PHP_SAPI == 'cli') { echo $error; } else { echo '
 \__/
(xx)
//||\\\\

Erreur d\'exécution

'; if (SHOW_ERRORS) { echo '

Une erreur s\'est produite à l\'exécution de Garradin. Pour rapporter ce bug merci d\'inclure le message suivant :


Comment rapporter un bug

'; } else { echo '

Une erreur s\'est produite à l\'exécution de Garradin.

Le webmaster a été prévenu.

'; } } exit; } set_error_handler('Garradin\exception_error_handler'); set_exception_handler('Garradin\exception_handler'); /** * Auto-load classes and libs */ class Loader { /** * Already loaded filenames * @var array */ static protected $loaded = []; static protected $libs = [ 'utils', 'squelette_filtres', 'static_cache', 'template' ]; /** * Loads a class from the $name * @param stringg $classname * @return bool true */ static public function load($classname) { $classname = ltrim($classname, '\\'); $filename = ''; $namespace = ''; if ($lastnspos = strripos($classname, '\\')) { $namespace = substr($classname, 0, $lastnspos); $classname = substr($classname, $lastnspos + 1); if ($namespace != 'Garradin') { $filename = str_replace('\\', '/', $namespace) . '/'; } } $classname = strtolower($classname); if (in_array($classname, self::$libs)) { $filename = 'lib.' . $classname . '.php'; } else { $filename .= 'class.' . $classname . '.php'; } $filename = ROOT . '/include/' . $filename; if (array_key_exists($filename, self::$loaded)) { return true; } if (!file_exists($filename)) { throw new \Exception('File '.$filename.' doesn\'t exists'); } self::$loaded[$filename] = true; require $filename; } } \spl_autoload_register(['Garradin\Loader', 'load'], true); $n = new Membres; /* * Inclusion des fichiers de base */ if (!defined('Garradin\INSTALL_PROCESS') && !defined('Garradin\UPGRADE_PROCESS')) { if (!file_exists(DB_FILE)) { utils::redirect('/admin/install.php'); } $config = Config::getInstance(); if (version_compare($config->getVersion(), garradin_version(), '<')) { utils::redirect('/admin/upgrade.php'); } } ?>