Skip to content

Commit

Permalink
MDL-40435 detect permission setting problems in core_component
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed Jul 13, 2013
1 parent d7245e3 commit 766e04f
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/classes/component.php
Expand Up @@ -155,16 +155,21 @@ protected static function init() {
unlink($cachefile);
}

// Permissions might not be setup properly in installers.
$dirpermissions = !isset($CFG->directorypermissions) ? 02777 : $CFG->directorypermissions;
$filepermissions = !isset($CFG->filepermissions) ? ($dirpermissions & 0666) : $CFG->filepermissions;

clearstatcache();
$cachedir = dirname($cachefile);
if (!is_dir($cachedir)) {
mkdir($cachedir, $CFG->directorypermissions, true);
mkdir($cachedir, $dirpermissions, true);
}

if ($fp = @fopen($cachefile.'.tmp', 'xb')) {
fwrite($fp, $content);
fclose($fp);
@rename($cachefile.'.tmp', $cachefile);
@chmod($cachefile, $CFG->filepermissions);
@chmod($cachefile, $filepermissions);
}
@unlink($cachefile.'.tmp'); // Just in case anything fails (race condition).
self::invalidate_opcode_php_cache($cachefile);
Expand Down

0 comments on commit 766e04f

Please sign in to comment.