aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Martin <spleefer90@gmail.com> 2021-02-05 21:59:21 +0100
committerGravatar GitHub <noreply@github.com> 2021-02-05 21:59:21 +0100
commit934f032c19ba0ae16a4d19702c8e95c377f64c14 (patch)
treedb893d48f850e2a6e2dacfb9b57bbe1b9e4c8dbb
parent0577bc772bb28b3bda0f33b184c79aa226e606ca (diff)
Better error message on failure (#3407)
* bump default logout from 30 to 365 days * * Change cookie duration to constant * Change cookie duration to three months * use class * use 90 days (otherwise login form says 91.3 days) * change class * also this works now * Better error message * inconsistent dot with the other message * Better error message * add errorMessage() * fix style * html escape the error title * also html escape error message * remove spaces before parentheses * rework the error message * Minz-friendly * Update message Do not advise running this script as wrong user * Update lib/lib_rss.php Co-authored-by: Martin <spleefer90@gmail.com> Co-authored-by: Martin Rys <martin@rys.pw> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
-rw-r--r--lib/Minz/FrontController.php31
-rw-r--r--lib/lib_rss.php27
-rwxr-xr-xp/i/index.php5
3 files changed, 44 insertions, 19 deletions
diff --git a/lib/Minz/FrontController.php b/lib/Minz/FrontController.php
index 1f67884fa..b6831c2f3 100644
--- a/lib/Minz/FrontController.php
+++ b/lib/Minz/FrontController.php
@@ -43,7 +43,7 @@ class Minz_FrontController {
Minz_Request::forward ($url);
} catch (Minz_Exception $e) {
Minz_Log::error($e->getMessage());
- $this->killApp ($e->getMessage ());
+ $this->killApp ($e->getMessage());
}
$this->dispatcher = Minz_Dispatcher::getInstance();
@@ -54,21 +54,21 @@ class Minz_FrontController {
* @return tableau représentant l'url
*/
private function buildUrl() {
- $url = array ();
+ $url = array();
- $url['c'] = Minz_Request::fetchGET (
+ $url['c'] = Minz_Request::fetchGET(
'c',
- Minz_Request::defaultControllerName ()
+ Minz_Request::defaultControllerName()
);
- $url['a'] = Minz_Request::fetchGET (
+ $url['a'] = Minz_Request::fetchGET(
'a',
- Minz_Request::defaultActionName ()
+ Minz_Request::defaultActionName()
);
- $url['params'] = Minz_Request::fetchGET ();
+ $url['params'] = Minz_Request::fetchGET();
// post-traitement
- unset ($url['params']['c']);
- unset ($url['params']['a']);
+ unset($url['params']['c']);
+ unset($url['params']['a']);
return $url;
}
@@ -76,7 +76,7 @@ class Minz_FrontController {
/**
* Démarre l'application (lance le dispatcher et renvoie la réponse)
*/
- public function run () {
+ public function run() {
try {
$this->dispatcher->run();
} catch (Minz_Exception $e) {
@@ -92,11 +92,11 @@ class Minz_FrontController {
$e instanceof Minz_ActionException) {
Minz_Error::error (
404,
- array ('error' => array ($e->getMessage ())),
+ array('error' => array ($e->getMessage ())),
true
);
} else {
- $this->killApp ();
+ $this->killApp();
}
}
}
@@ -105,10 +105,11 @@ class Minz_FrontController {
* Permet d'arrêter le programme en urgence
*/
private function killApp ($txt = '') {
- if ($txt == '') {
- $txt = 'See logs files';
+ if (function_exists('errorMessage')) {
+ //If the application has defined a custom error message function
+ exit(errorMessage('Application problem', $txt));
}
- exit ('### Application problem ###<br />'."\n".$txt);
+ exit('### Application problem ###<br />' . "\n" . $txt);
}
private function setReporting() {
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 37eea7c0f..cf1cd1b50 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -578,3 +578,30 @@ function validateShortcutList($shortcuts) {
}
return $shortcuts_ok;
}
+
+function errorMessage($errorTitle, $error = '') {
+ // Prevent empty <h2> tags by checking if error isn't empty first
+ if ('' !== $error) {
+ $error = htmlspecialchars($error, ENT_NOQUOTES, 'UTF-8');
+ $error = "<h2>{$error}</h2>";
+ }
+ $errorTitle = htmlspecialchars($errorTitle, ENT_NOQUOTES, 'UTF-8');
+ return <<<MSG
+ <h1>{$errorTitle}</h1>
+ {$error}
+ <h2>Common problems</h2>
+ <p>A typical problem leading to this message is wrong file permissions in the <code>./FreshRSS/data/</code> folder so make sure the Web server can write there and in sub-directories.</p>
+ <h2>Common locations for additional logs</h2>
+ <p><strong>N.B.:</strong> Adapt names and paths according to your local setup.</p>
+ <ul>
+ <li>If using Docker: <code>docker logs -f freshrss</code></li>
+ <li>To check Web server logs on a Linux system using systemd: <code>journalctl -xeu apache2</code>
+ and if you are using php-fpm: <code>journalctl -xeu php-fpm</code></li>
+ <li>Otherwise, Web server logs are typically located in <code>/var/log/apache2/</code> or similar</li>
+ <li>System logs may also contain relevant information in <code>/var/log/syslog</code>, or if using systemd: <code>sudo journalctl -xe</code></li>
+ </ul>
+ <p>More logs can be generated by enabling <code>'environment' => 'development',</code> in <code>./FreshRSS/data/config.php</code></p>
+ <p>Running the feed update script (with the same user and PHP version as your Web server) might provide other hints, e.g.:
+ <code>sudo -u www-data /usr/bin/php ./FreshRSS/app/actualize_script.php</code></p>
+ MSG;
+}
diff --git a/p/i/index.php b/p/i/index.php
index 0d3f11900..cd82ae538 100755
--- a/p/i/index.php
+++ b/p/i/index.php
@@ -76,11 +76,8 @@ if (file_exists(DATA_PATH . '/do-install.txt')) {
}
if ($error) {
- // TODO this should be definitely improved to display a nicer error
- // page to the users (especially non administrators).
- echo '### Fatal error! ###<br />', "\n";
Minz_Log::error($error);
- echo 'See logs files.';
+ errorMessage('Fatal error');
syslog(LOG_INFO, 'FreshRSS Fatal error! ' . $error);
}
}