diff --git a/core/Piwik.php b/core/Piwik.php index 060817cbb7ee431b690ba5781aa13485244119ad..5fd809edd8095641e43538ba889251409684d480 100644 --- a/core/Piwik.php +++ b/core/Piwik.php @@ -290,6 +290,10 @@ class Piwik */ static public function checkDirectoriesWritable($directoriesToCheck = null) { + static $publicFolders = array( + '/tmp/assets/', + ); + if( $directoriesToCheck == null ) { $directoriesToCheck = array( @@ -305,6 +309,7 @@ class Piwik $resultCheck = array(); foreach($directoriesToCheck as $directoryToCheck) { + $overrideUmask = in_array($directoryToCheck, $publicFolders); if( !preg_match('/^'.preg_quote(PIWIK_USER_PATH, '/').'/', $directoryToCheck) ) { $directoryToCheck = PIWIK_USER_PATH . $directoryToCheck; @@ -312,7 +317,14 @@ class Piwik if(!file_exists($directoryToCheck)) { + // the mode in mkdir is modified by the current umask Piwik_Common::mkdir($directoryToCheck, 0755, false); + + // override an overly restrictive umask for public folders only + if($overrideUmask) + { + @chmod($directoryToCheck, 0755); + } } $directory = Piwik_Common::realpath($directoryToCheck);