diff options
| -rw-r--r-- | lib/Minz/FrontController.php | 31 | ||||
| -rw-r--r-- | lib/lib_rss.php | 27 | ||||
| -rwxr-xr-x | p/i/index.php | 5 |
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); } } |
