X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=index.php;h=84a992efb3731b30d9f0ddc892569195c13dcbec;hb=1536d3ef29486fc1c5387e73106b86873fdb7cf9;hp=1d0aabb8bb375ea0592ba138e2b3a0ca72a9e5c7;hpb=220b51d8be61e9bd316567f3ad03fffdbc4b7526;p=quix0rs-gnu-social.git diff --git a/index.php b/index.php index 1d0aabb8bb..84a992efb3 100644 --- a/index.php +++ b/index.php @@ -40,6 +40,12 @@ $_startTime = microtime(true); $_perfCounters = array(); +// We provide all our dependencies through our own autoload. +// This will probably be configurable for distributing with +// system packages (like with Debian apt etc. where included +// libraries are maintained through repositories) +set_include_path('.'); // mainly fixes an issue where /usr/share/{pear,php*}/DB/DataObject.php is _old_ on various systems... + define('INSTALLDIR', dirname(__FILE__)); define('GNUSOCIAL', true); define('STATUSNET', true); // compatibility @@ -87,9 +93,9 @@ function handleError($error) return; } - $logmsg = "PEAR error: " . $error->getMessage(); - if ($error instanceof PEAR_Exception && common_config('site', 'logdebug')) { - $logmsg .= " : ". $error->toText(); + $logmsg = "Exception thrown: " . _ve($error->getMessage()); + if ($error instanceof PEAR_Exception && common_config('log', 'debugtrace')) { + $logmsg .= " PEAR: ". $error->toText(); } // DB queries often end up with a lot of newlines; merge to a single line // for easier grepability... @@ -97,7 +103,7 @@ function handleError($error) common_log(LOG_ERR, $logmsg); // @fixme backtrace output should be consistent with exception handling - if (common_config('site', 'logdebug')) { + if (common_config('log', 'debugtrace')) { $bt = $error->getTrace(); foreach ($bt as $n => $line) { common_log(LOG_ERR, formatBacktraceLine($n, $line)); @@ -125,22 +131,32 @@ function handleError($error) common_config('site', 'email') ); - $dac = new DBErrorAction($msg, 500); - $dac->showPage(); + $erraction = new DBErrorAction($msg, 500); + } elseif ($error instanceof ClientException) { + $erraction = new ClientErrorAction($error->getMessage(), $error->getCode()); + } elseif ($error instanceof ServerException) { + $erraction = new ServerErrorAction($error->getMessage(), $error->getCode(), $error); } else { - $sac = new ServerErrorAction($error->getMessage(), 500, $error); - $sac->showPage(); + // If it wasn't specified more closely which kind of exception it was + $erraction = new ServerErrorAction($error->getMessage(), 500, $error); } + $erraction->showPage(); } catch (Exception $e) { // TRANS: Error message. echo _('An error occurred.'); + exit(-1); } exit(-1); } set_exception_handler('handleError'); +// quick check for fancy URL auto-detection support in installer. +if (preg_replace("/\?.+$/", "", $_SERVER['REQUEST_URI']) === preg_replace("/^\/$/", "", (dirname($_SERVER['REQUEST_URI']))) . '/check-fancy') { + die("Fancy URL support detection succeeded. We suggest you enable this to get fancy (pretty) URLs."); +} + require_once INSTALLDIR . '/lib/common.php'; /** @@ -216,30 +232,6 @@ function isLoginAction($action) function main() { - // fake HTTP redirects using lighttpd's 404 redirects - if (strpos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') !== false) { - $_lighty_url = $_SERVER['REQUEST_URI']; - $_lighty_url = @parse_url($_lighty_url); - - if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/') { - $_lighty_path = preg_replace('/^'.preg_quote(common_config('site', 'path')).'\//', '', substr($_lighty_url['path'], 1)); - $_SERVER['QUERY_STRING'] = 'p='.$_lighty_path; - if (isset($_lighty_url['query']) && $_lighty_url['query'] != '') { - $_SERVER['QUERY_STRING'] .= '&'.$_lighty_url['query']; - parse_str($_lighty_url['query'], $_lighty_query); - foreach ($_lighty_query as $key => $val) { - $_GET[$key] = $_REQUEST[$key] = $val; - } - } - $_GET['p'] = $_REQUEST['p'] = $_lighty_path; - } - } - $_SERVER['REDIRECT_URL'] = preg_replace("/\?.+$/", "", $_SERVER['REQUEST_URI']); - - // quick check for fancy URL auto-detection support in installer. - if (isset($_SERVER['REDIRECT_URL']) && (preg_replace("/^\/$/", "", (dirname($_SERVER['REQUEST_URI']))) . '/check-fancy') === $_SERVER['REDIRECT_URL']) { - die("Fancy URL support detection succeeded. We suggest you enable this to get fancy (pretty) URLs."); - } global $user, $action; if (!_have_config()) { @@ -274,21 +266,12 @@ function main() $args = $r->map($path); - if (!$args) { - // TRANS: Error message displayed when trying to access a non-existing page. - $cac = new ClientErrorAction(_('Unknown page'), 404); - $cac->showPage(); - return; - } - - $site_ssl = common_config('site', 'ssl'); - // If the request is HTTP and it should be HTTPS... - if ($site_ssl != 'never' && !StatusNet::isHTTPS() && common_is_sensitive($args['action'])) { + if (GNUsocial::useHTTPS() && !GNUsocial::isHTTPS()) { common_redirect(common_local_url($args['action'], $args)); } - $args = array_merge($args, $_REQUEST); + $args = array_merge($args, $_REQUEST ?: []); Event::handle('ArgsInitialize', array(&$args)); @@ -328,22 +311,10 @@ function main() if (!class_exists($action_class)) { // TRANS: Error message displayed when trying to perform an undefined action. - $cac = new ClientErrorAction(_('Unknown action'), 404); - $cac->showPage(); - } else { - try { - call_user_func("$action_class::run", $args); - } catch (ClientException $cex) { - $cac = new ClientErrorAction($cex->getMessage(), $cex->getCode()); - $cac->showPage(); - } catch (ServerException $sex) { // snort snort guffaw - $sac = new ServerErrorAction($sex->getMessage(), $sex->getCode(), $sex); - $sac->showPage(); - } catch (Exception $ex) { - $sac = new ServerErrorAction($ex->getMessage(), 500, $ex); - $sac->showPage(); - } + throw new ClientException(_('Unknown action'), 404); } + + call_user_func("$action_class::run", $args); } main();