Default cache permissions to the current umask.
Use system-defined umask by default, and strongly recommend going that route, but allow overrides.
This commit is contained in:
+17
-11
@@ -39,7 +39,7 @@ class Mustache_Engine
|
|||||||
private $helpers;
|
private $helpers;
|
||||||
private $escape;
|
private $escape;
|
||||||
private $charset = 'UTF-8';
|
private $charset = 'UTF-8';
|
||||||
private $cacheFilePerm = 0644;
|
private $cacheFileMode = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mustache class constructor.
|
* Mustache class constructor.
|
||||||
@@ -75,11 +75,12 @@ class Mustache_Engine
|
|||||||
* return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8');
|
* return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8');
|
||||||
* },
|
* },
|
||||||
*
|
*
|
||||||
* // character set for `htmlspecialchars`. Defaults to 'UTF-8'
|
* // Character set for `htmlspecialchars`. Defaults to 'UTF-8'
|
||||||
* 'charset' => 'ISO-8859-1',
|
* 'charset' => 'ISO-8859-1',
|
||||||
*
|
*
|
||||||
* // permissions for cache files. Defaults to 0644
|
* // Override default permissions for cache files. Defaults to using the system-defined umask. It is
|
||||||
* 'cache_file_perm' => 0666,
|
* // *strongly* recommended that you configure your umask properly rather than overriding permissions here.
|
||||||
|
* 'cache_file_mode' => 0666,
|
||||||
* );
|
* );
|
||||||
*
|
*
|
||||||
* @param array $options (default: array())
|
* @param array $options (default: array())
|
||||||
@@ -122,8 +123,8 @@ class Mustache_Engine
|
|||||||
$this->charset = $options['charset'];
|
$this->charset = $options['charset'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($options['cache_file_perm'])) {
|
if (isset($options['cache_file_mode'])) {
|
||||||
$this->cacheFilePerm = $options['cache_file_perm'];
|
$this->cacheFileMode = $options['cache_file_mode'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -572,7 +573,7 @@ class Mustache_Engine
|
|||||||
/**
|
/**
|
||||||
* Helper method to dump a generated Mustache Template subclass to the file cache.
|
* Helper method to dump a generated Mustache Template subclass to the file cache.
|
||||||
*
|
*
|
||||||
* @throws RuntimeException if unable to write to $fileName.
|
* @throws RuntimeException if unable to create the cache directory or write $fileName
|
||||||
*
|
*
|
||||||
* @param string $fileName
|
* @param string $fileName
|
||||||
* @param string $source
|
* @param string $source
|
||||||
@@ -581,14 +582,19 @@ class Mustache_Engine
|
|||||||
*/
|
*/
|
||||||
private function writeCacheFile($fileName, $source)
|
private function writeCacheFile($fileName, $source)
|
||||||
{
|
{
|
||||||
if (!is_dir(dirname($fileName))) {
|
$dirName = dirname($fileName);
|
||||||
mkdir(dirname($fileName), 0777, true);
|
if (!is_dir($dirName)) {
|
||||||
|
@mkdir($dirName, 0777, true);
|
||||||
|
if (!is_dir($dirName)) {
|
||||||
|
throw new RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$tempFile = tempnam(dirname($fileName), basename($fileName));
|
$tempFile = tempnam($dirName, basename($fileName));
|
||||||
if (false !== @file_put_contents($tempFile, $source)) {
|
if (false !== @file_put_contents($tempFile, $source)) {
|
||||||
if (@rename($tempFile, $fileName)) {
|
if (@rename($tempFile, $fileName)) {
|
||||||
chmod($fileName, $this->cacheFilePerm);
|
$mode = isset($this->cacheFileMode) ? $this->cacheFileMode : (0666 & ~umask());
|
||||||
|
@chmod($fileName, $mode);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user