diff --git a/includes/file.inc b/includes/file.inc index 6cf3586df89..4495aca9d31 100644 --- a/includes/file.inc +++ b/includes/file.inc @@ -156,7 +156,9 @@ function file_check_directory(&$directory, $mode = 0, $form_item = NULL) { // Check if directory exists. if (!is_dir($directory)) { - if (($mode & FILE_CREATE_DIRECTORY) && @mkdir($directory)) { + // Let mkdir() recursively create directories and use the default directory + // permissions. + if (($mode & FILE_CREATE_DIRECTORY) && @mkdir($directory, variable_get('file_chmod_directory', 0775), TRUE)) { drupal_chmod($directory); } else { diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test index bbf434055d6..b443777ba98 100644 --- a/modules/simpletest/tests/file.test +++ b/modules/simpletest/tests/file.test @@ -672,7 +672,7 @@ class FileDirectoryTest extends FileTestCase { */ function testFileCheckDirectory() { // A directory to operate on. - $directory = file_directory_path() . '/' . $this->randomName(); + $directory = file_directory_path() . '/' . $this->randomName() . '/' . $this->randomName(); $this->assertFalse(is_dir($directory), t('Directory does not exist prior to testing.')); // Non-existent directory.