Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 #13736 and #12893
  • Loading branch information
LukasReschke committed Jan 26, 2016
commit 8a4e1fbecde952fe86e1345b3d274c2c8b5778a8
2 changes: 1 addition & 1 deletion lib/private/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ private function readData() {

// 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)) {
Expand Down
23 changes: 12 additions & 11 deletions lib/private/log/owncloud.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,18 @@ public static function init() {
$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;
}
}
}
}

Expand Down