allow creating of missing tmp directories in debug (development) mode for cache and log to avoid unnecessary errors thrown - using 0775 for dirs and 0664 for files

This commit is contained in:
euromark 2013-08-07 13:24:45 +02:00
parent 802228f1d1
commit f5859ca719
4 changed files with 23 additions and 8 deletions

View file

@ -299,7 +299,7 @@ class FileEngine extends CacheEngine {
$dir = $this->settings['path'] . $groups; $dir = $this->settings['path'] . $groups;
if (!is_dir($dir)) { if (!is_dir($dir)) {
mkdir($dir, 0777, true); mkdir($dir, 0775, true);
} }
$path = new SplFileInfo($dir . $key); $path = new SplFileInfo($dir . $key);
@ -332,6 +332,12 @@ class FileEngine extends CacheEngine {
*/ */
protected function _active() { protected function _active() {
$dir = new SplFileInfo($this->settings['path']); $dir = new SplFileInfo($this->settings['path']);
if (Configure::read('debug')) {
$path = $dir->getPathname();
if (!is_dir($path)) {
mkdir($path, 0775, true);
}
}
if ($this->_init && !($dir->isDir() && $dir->isWritable())) { if ($this->_init && !($dir->isDir() && $dir->isWritable())) {
$this->_init = false; $this->_init = false;
trigger_error(__d('cake_dev', '%s is not writable', $this->settings['path']), E_USER_WARNING); trigger_error(__d('cake_dev', '%s is not writable', $this->settings['path']), E_USER_WARNING);

View file

@ -104,6 +104,10 @@ class FileLog extends BaseLog {
if (!empty($config['path'])) { if (!empty($config['path'])) {
$this->_path = $config['path']; $this->_path = $config['path'];
} }
if (Configure::read('debug') && !is_dir($this->_path)) {
mkdir($this->_path, 0775, true);
}
if (!empty($config['file'])) { if (!empty($config['file'])) {
$this->_file = $config['file']; $this->_file = $config['file'];
if (substr($this->_file, -4) !== '.log') { if (substr($this->_file, -4) !== '.log') {

View file

@ -132,6 +132,10 @@ class CacheTest extends CakeTestCase {
* @return void * @return void
*/ */
public function testInvalidConfig() { public function testInvalidConfig() {
// In debug mode it would auto create the folder.
$debug = Configure::read('debug');
Configure::write('debug', 0);
Cache::config('invalid', array( Cache::config('invalid', array(
'engine' => 'File', 'engine' => 'File',
'duration' => '+1 year', 'duration' => '+1 year',
@ -141,6 +145,8 @@ class CacheTest extends CakeTestCase {
'random' => 'wii' 'random' => 'wii'
)); ));
Cache::read('Test', 'invalid'); Cache::read('Test', 'invalid');
Configure::write('debug', $debug);
} }
/** /**

View file

@ -338,20 +338,19 @@ class FileEngineTest extends CakeTestCase {
} }
/** /**
* check that FileEngine generates an error when a configured Path does not exist. * check that FileEngine does not generate an error when a configured Path does not exist in debug mode.
* *
* @expectedException PHPUnit_Framework_Error_Warning
* @return void * @return void
*/ */
public function testErrorWhenPathDoesNotExist() { public function testPathDoesNotExist() {
$this->skipIf(is_dir(TMP . 'tests' . DS . 'file_failure'), 'Cannot run test directory exists.'); $this->skipIf(is_dir(TMP . 'tests' . DS . 'autocreate'), 'Cannot run if test directory exists.');
Cache::config('failure', array( Cache::config('autocreate', array(
'engine' => 'File', 'engine' => 'File',
'path' => TMP . 'tests' . DS . 'file_failure' 'path' => TMP . 'tests' . DS . 'autocreate'
)); ));
Cache::drop('failure'); Cache::drop('autocreate');
} }
/** /**