aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Models/Context.php2
-rw-r--r--app/Models/LogDAO.php4
-rwxr-xr-xapp/actualize_script.php4
-rw-r--r--constants.php3
-rw-r--r--docs/en/admins/01_Index.md3
-rw-r--r--docs/en/admins/logs_and_errors.md40
-rw-r--r--lib/Minz/FrontController.php17
-rw-r--r--lib/Minz/Log.php2
-rw-r--r--lib/lib_rss.php31
-rwxr-xr-xp/i/index.php5
10 files changed, 73 insertions, 38 deletions
diff --git a/app/Models/Context.php b/app/Models/Context.php
index 5b7c89089..fed2a6767 100644
--- a/app/Models/Context.php
+++ b/app/Models/Context.php
@@ -100,7 +100,7 @@ class FreshRSS_Context {
$user_conf = Minz_Configuration::get('user');
FreshRSS_Context::$user_conf = $user_conf;
} catch (Exception $ex) {
- Minz_Log::warning($ex->getMessage(), USERS_PATH . '/_/log.txt');
+ Minz_Log::warning($ex->getMessage(), USERS_PATH . '/_/' . LOG_FILENAME);
}
}
if (FreshRSS_Context::$user_conf == null) {
diff --git a/app/Models/LogDAO.php b/app/Models/LogDAO.php
index 5bce466d5..787945af4 100644
--- a/app/Models/LogDAO.php
+++ b/app/Models/LogDAO.php
@@ -3,7 +3,7 @@
class FreshRSS_LogDAO {
public static function lines() {
$logs = array();
- $handle = @fopen(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), 'log.txt'), 'r');
+ $handle = @fopen(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), LOG_FILENAME), 'r');
if ($handle) {
while (($line = fgets($handle)) !== false) {
if (preg_match('/^\[([^\[]+)\] \[([^\[]+)\] --- (.*)$/', $line, $matches)) {
@@ -20,7 +20,7 @@ class FreshRSS_LogDAO {
}
public static function truncate() {
- file_put_contents(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), 'log.txt'), '');
+ file_put_contents(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), LOG_FILENAME), '');
if (FreshRSS_Auth::hasAccess('admin')) {
file_put_contents(ADMIN_LOG, '');
file_put_contents(API_LOG, '');
diff --git a/app/actualize_script.php b/app/actualize_script.php
index 08f897a6c..bad466e64 100755
--- a/app/actualize_script.php
+++ b/app/actualize_script.php
@@ -83,9 +83,9 @@ foreach ($users as $user) {
$app->run();
if (!invalidateHttpCache()) {
- Minz_Log::warning('FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt'), ADMIN_LOG);
+ Minz_Log::warning('FreshRSS write access problem in ' . join_path(USERS_PATH, $user, LOG_FILENAME), ADMIN_LOG);
if (defined('STDERR')) {
- fwrite(STDERR, 'FreshRSS write access problem in ' . join_path(USERS_PATH, $user, 'log.txt') . "\n");
+ fwrite(STDERR, 'FreshRSS write access problem in ' . join_path(USERS_PATH, $user, LOG_FILENAME) . "\n");
}
}
diff --git a/constants.php b/constants.php
index fa4e54233..76593703e 100644
--- a/constants.php
+++ b/constants.php
@@ -42,7 +42,8 @@ defined('DATA_PATH') or define('DATA_PATH', FRESHRSS_PATH . '/data');
defined('UPDATE_FILENAME') or define('UPDATE_FILENAME', DATA_PATH . '/update.php');
defined('USERS_PATH') or define('USERS_PATH', DATA_PATH . '/users');
-defined('ADMIN_LOG') or define('ADMIN_LOG', USERS_PATH . '/_/log.txt');
+defined('LOG_FILENAME') or define('LOG_FILENAME', 'log.txt');
+defined('ADMIN_LOG') or define('ADMIN_LOG', USERS_PATH . '/_/' . LOG_FILENAME);
defined('API_LOG') or define('API_LOG', USERS_PATH . '/_/log_api.txt');
defined('CACHE_PATH') or define('CACHE_PATH', DATA_PATH . '/cache');
defined('PSHB_LOG') or define('PSHB_LOG', USERS_PATH . '/_/log_pshb.txt');
diff --git a/docs/en/admins/01_Index.md b/docs/en/admins/01_Index.md
index 792434389..8bf07c021 100644
--- a/docs/en/admins/01_Index.md
+++ b/docs/en/admins/01_Index.md
@@ -2,9 +2,12 @@
Learn how to install, update, and backup FreshRSS, as well as how to use the command line tools.
+## System Basics
+
1. [Prerequisites](02_Prerequisites.md): What you’ll need to run FreshRSS
2. [General installation instructions](03_Installation.md) for FreshRSS
3. [Update your installation](04_Updating.md) to the latest stable or development version
+4. [Logging and error messages](logs_and_errors.md) in case of any troubles
## Tutorials and Examples
diff --git a/docs/en/admins/logs_and_errors.md b/docs/en/admins/logs_and_errors.md
new file mode 100644
index 000000000..efb05fdb8
--- /dev/null
+++ b/docs/en/admins/logs_and_errors.md
@@ -0,0 +1,40 @@
+# Logging and Error Messages
+
+## Read the Log
+
+### Log in the Application
+
+The log files are displayed in the config menu.
+
+### Log as Text Files
+
+FreshRSS logs are located in:
+* user related: `./FreshRSS/data/users/*/log.txt`
+* general/system related: `./FreshRSS/data/users/_/log.txt`
+
+### More Logging Information
+
+More logs can be generated by enabling `'environment' => 'development'` (default: `'production'`), in `./FreshRSS/data/config.php`
+
+## Error Message
+
+If there is an 'Application Problem' or 'Fatal Error', then a HTTP 500 error message is shown with more information.
+
+## Often the Cause of Problems
+
+A typical problem is wrong file permissions in the `./FreshRSS/data/` folder so make sure the Web server can write there and in sub-directories.
+
+## Common locations for additional logs
+
+Adapt names and paths according to your local setup.
+
+* If using Docker: `docker logs -f freshrss`
+* To check Web server logs on a Linux system using systemd: `journalctl -xeu apache2` and if you are using php-fpm: `journalctl -xeu php-fpm`
+* Otherwise, Web server logs are typically located in `/var/log/apache2/` or similar
+* System logs may also contain relevant information in `/var/log/syslog`, or if using systemd: `sudo journalctl -xe`
+
+Running the feed update script (with the same user and PHP version as your Web server) might provide other hints, e.g.: `sudo -u www-data /usr/bin/php ./FreshRSS/app/actualize_script.php`
+
+## Help needed
+
+see: [Report a bug](https://freshrss.github.io/FreshRSS/en/contributing.html)
diff --git a/lib/Minz/FrontController.php b/lib/Minz/FrontController.php
index dea818a91..80fa5ce96 100644
--- a/lib/Minz/FrontController.php
+++ b/lib/Minz/FrontController.php
@@ -44,7 +44,7 @@ class Minz_FrontController {
Minz_Request::forward ($url);
} catch (Minz_Exception $e) {
Minz_Log::error($e->getMessage());
- $this->killApp ($e->getMessage());
+ self::killApp($e->getMessage());
}
$this->dispatcher = Minz_Dispatcher::getInstance();
@@ -78,7 +78,7 @@ class Minz_FrontController {
try {
Minz_Log::error($e->getMessage());
} catch (Minz_PermissionDeniedException $e) {
- $this->killApp ($e->getMessage ());
+ self::killApp($e->getMessage());
}
if ($e instanceof Minz_FileNotExistException ||
@@ -91,20 +91,21 @@ class Minz_FrontController {
true
);
} else {
- $this->killApp($e->getMessage());
+ self::killApp($e->getMessage());
}
}
}
/**
- * Permet d'arrêter le programme en urgence
- */
- private function killApp ($txt = '') {
+ * Kills the programme
+ */
+ public static function killApp($txt = '') {
+ header('HTTP 1.1 500 Internal Server Error', true, 500);
if (function_exists('errorMessageInfo')) {
//If the application has defined a custom error message function
- exit(errorMessageInfo('Application problem', $txt));
+ die(errorMessageInfo('Application problem', $txt));
}
- exit('### Application problem ###<br />' . "\n" . $txt);
+ die('### Application problem ###<br />' . "\n" . $txt);
}
private function setReporting() {
diff --git a/lib/Minz/Log.php b/lib/Minz/Log.php
index 80b93a097..43f3c9d6d 100644
--- a/lib/Minz/Log.php
+++ b/lib/Minz/Log.php
@@ -36,7 +36,7 @@ class Minz_Log {
$username = '_';
}
if ($file_name == null) {
- $file_name = join_path(USERS_PATH, $username, 'log.txt');
+ $file_name = join_path(USERS_PATH, $username, LOG_FILENAME);
} else {
$username = '_';
}
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index b485d379b..743aa7840 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -508,7 +508,7 @@ function invalidateHttpCache($username = '') {
Minz_Session::_param('touch', uTimeString());
$username = Minz_Session::param('currentUser', '_');
}
- $ok = @touch(DATA_PATH . '/users/' . $username . '/log.txt');
+ $ok = @touch(DATA_PATH . '/users/' . $username . '/' . LOG_FILENAME);
//if (!$ok) {
//TODO: Display notification error on front-end
//}
@@ -569,9 +569,9 @@ function get_user_configuration($username) {
FRESHRSS_PATH . '/config-user.default.php');
} catch (Minz_ConfigurationNamespaceException $e) {
// namespace already exists, do nothing.
- Minz_Log::warning($e->getMessage(), USERS_PATH . '/_/log.txt');
+ Minz_Log::warning($e->getMessage(), ADMIN_LOG);
} catch (Minz_FileNotExistException $e) {
- Minz_Log::warning($e->getMessage(), USERS_PATH . '/_/log.txt');
+ Minz_Log::warning($e->getMessage(), ADMIN_LOG);
return null;
}
@@ -823,25 +823,16 @@ function errorMessageInfo($errorTitle, $error = '') {
$details = "<pre>{$details}</pre>";
}
+ header("Content-Security-Policy: default-src 'self'");
+
return <<<MSG
- <h1>{$errorTitle}</h1>
+ <!DOCTYPE html><html><header><title>HTTP 500: {$errorTitle}</title></header><body>
+ <h1>HTTP 500: {$errorTitle}</h1>
{$message}
{$details}
- <h2>Check the logs</h2>
- <p>FreshRSS logs are located in <code>./FreshRSS/data/users/*/log*.txt</code></p>
- <p><em>N.B.:</em> A typical problem 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>
- <h3>Common locations for additional logs</h3>
- <p><em>N.B.:</em> 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>
+ <hr />
+ <small>For help see the documentation: <a href="https://freshrss.github.io/FreshRSS/en/admins/logs_and_errors.html" target="_blank">
+ https://freshrss.github.io/FreshRSS/en/admins/logs_and_errors.html</a></small>
+ </body></html>
MSG;
}
diff --git a/p/i/index.php b/p/i/index.php
index 949d82aec..48cedfc92 100755
--- a/p/i/index.php
+++ b/p/i/index.php
@@ -35,7 +35,7 @@ if (!file_exists($applied_migrations_path)) {
require(LIB_PATH . '/http-conditional.php');
$currentUser = Minz_Session::param('currentUser', '');
$dateLastModification = $currentUser === '' ? time() : max(
- @filemtime(join_path(USERS_PATH, $currentUser, 'log.txt')),
+ @filemtime(join_path(USERS_PATH, $currentUser, LOG_FILENAME)),
@filemtime(join_path(DATA_PATH, 'config.php'))
);
if (httpConditional($dateLastModification, 0, 0, false, PHP_COMPRESSION, true)) {
@@ -64,7 +64,6 @@ if (!file_exists($applied_migrations_path)) {
if ($error) {
syslog(LOG_INFO, 'FreshRSS Fatal error! ' . $error);
- Minz_Log::error($error);
- die(errorMessageInfo('Fatal error', $error));
+ FreshRSS::killApp($error);
}
}