aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2016-01-26 16:48:57 +0100
committerLukas Reschke <lukas@owncloud.com>2016-01-26 17:06:23 +0100
commit8a4e1fbecde952fe86e1345b3d274c2c8b5778a8 (patch)
tree13e098ea77f8aaf3453c9f94f0e0c49f832a8f10
parentf383332d838e06d65c2ad74636540bf2c88ba8cc (diff)
downloadnextcloud-server-8a4e1fbecde952fe86e1345b3d274c2c8b5778a8.tar.gz
nextcloud-server-8a4e1fbecde952fe86e1345b3d274c2c8b5778a8.zip
Fix errors after install
When installing ownCloud the first time the first thing that an admin saw was an error message: > Error PHP touch(): Unable to create file owncloud.log because Permission denied at /var/www/owncloud/lib/private/log/owncloud.php#48 Or something related. This lead to a lot confusion as can be seen in our forum and in our issue tracker. This change should make the error messages disappear in most cases (e.g. where the file can actually be written). To test this: 1. On master install ownCloud and check owncloud.log => Error message 2. On this branch install ownCloud and check owncloud.log => No error message Fixes https://github.com/owncloud/core/issues/13736 and https://github.com/owncloud/core/issues/12893
-rw-r--r--lib/private/config.php2
-rw-r--r--lib/private/log/owncloud.php23
2 files changed, 13 insertions, 12 deletions
diff --git a/lib/private/config.php b/lib/private/config.php
index 30baa3fe0e6..368dafd0460 100644
--- a/lib/private/config.php
+++ b/lib/private/config.php
@@ -184,7 +184,7 @@ class Config {
// Include file and merge config
foreach ($configFiles as $file) {
- $filePointer = @fopen($file, 'r');
+ $filePointer = file_exists($file) ? fopen($file, 'r') : false;
if($file === $this->configFilePath &&
$filePointer === false &&
@!file_exists($this->configFilePath)) {
diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php
index f9ce671aa93..dabf95d7616 100644
--- a/lib/private/log/owncloud.php
+++ b/lib/private/log/owncloud.php
@@ -43,17 +43,18 @@ class OC_Log_Owncloud {
$defaultLogFile = $systemConfig->getValue("datadirectory", OC::$SERVERROOT.'/data').'/owncloud.log';
self::$logFile = $systemConfig->getValue("logfile", $defaultLogFile);
- /*
- * Fall back to default log file if specified logfile does not exist
- * and can not be created. Error suppression is required in order to
- * not end up in the error handler which will try to log the error.
- * A better solution (compared to error suppression) would be checking
- * !is_writable(dirname(self::$logFile)) before touch(), but
- * is_writable() on directories used to be pretty unreliable on Windows
- * for at least some time.
- */
- if (!file_exists(self::$logFile) && !@touch(self::$logFile)) {
- self::$logFile = $defaultLogFile;
+ /**
+ * Fall back to default log file if specified logfile does not exist
+ * and can not be created.
+ */
+ if (!file_exists(self::$logFile)) {
+ if(!is_writable(dirname(self::$logFile))) {
+ self::$logFile = $defaultLogFile;
+ } else {
+ if(!touch(self::$logFile)) {
+ self::$logFile = $defaultLogFile;
+ }
+ }
}
}