Don't complain about non-writable datadirs before we're installed
This commit is contained in:
parent
6fa3280c2a
commit
23dd7cb51d
2 changed files with 56 additions and 17 deletions
|
@ -463,26 +463,28 @@ class OC_Util {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_dir($CONFIG_DATADIRECTORY)) {
|
||||
$success = @mkdir($CONFIG_DATADIRECTORY);
|
||||
if ($success) {
|
||||
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
|
||||
} else {
|
||||
// Create root dir.
|
||||
if ($config->getSystemValue('installed', false)) {
|
||||
if (!is_dir($CONFIG_DATADIRECTORY)) {
|
||||
$success = @mkdir($CONFIG_DATADIRECTORY);
|
||||
if ($success) {
|
||||
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
|
||||
} else {
|
||||
$errors[] = array(
|
||||
'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)),
|
||||
'hint' => $l->t('This can usually be fixed by '
|
||||
. '<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.',
|
||||
array(OC_Helper::linkToDocs('admin-dir_permissions')))
|
||||
);
|
||||
}
|
||||
} else if (!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
|
||||
$errors[] = array(
|
||||
'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)),
|
||||
'hint' => $l->t('This can usually be fixed by '
|
||||
. '<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.',
|
||||
array(OC_Helper::linkToDocs('admin-dir_permissions')))
|
||||
'error' => 'Data directory (' . $CONFIG_DATADIRECTORY . ') not writable by ownCloud',
|
||||
'hint' => $permissionsHint
|
||||
);
|
||||
} else {
|
||||
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
|
||||
}
|
||||
} else if (!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
|
||||
$errors[] = array(
|
||||
'error' => 'Data directory (' . $CONFIG_DATADIRECTORY . ') not writable by ownCloud',
|
||||
'hint' => $permissionsHint
|
||||
);
|
||||
} else {
|
||||
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
|
||||
}
|
||||
|
||||
if (!OC_Util::isSetLocaleWorking()) {
|
||||
|
|
|
@ -19,6 +19,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
|||
*/
|
||||
protected function getConfig($systemOptions) {
|
||||
$systemOptions['datadirectory'] = $this->datadir;
|
||||
$systemOptions['appstoreenabled'] = false; //it's likely that there is no app folder we can write in
|
||||
$config = $this->getMockBuilder('\OCP\IConfig')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
@ -35,6 +36,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
|||
$this->datadir = \OC_Helper::tmpFolder();
|
||||
|
||||
file_put_contents($this->datadir . '/.ocdata', '');
|
||||
\OC::$server->getSession()->set('checkServer_succeeded', false);
|
||||
}
|
||||
|
||||
public function tearDown() {
|
||||
|
@ -121,4 +123,39 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
|||
$this->assertCount(1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that no error is given when the datadir is writable
|
||||
*/
|
||||
public function testDataDirWritable() {
|
||||
$result = \OC_Util::checkServer($this->getConfig(array(
|
||||
'installed' => true,
|
||||
'version' => implode('.', OC_Util::getVersion())
|
||||
)));
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an error is given when the datadir is not writable
|
||||
*/
|
||||
public function testDataDirNotWritable() {
|
||||
chmod($this->datadir, 0300);
|
||||
$result = \OC_Util::checkServer($this->getConfig(array(
|
||||
'installed' => true,
|
||||
'version' => implode('.', OC_Util::getVersion())
|
||||
)));
|
||||
$this->assertCount(1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests no error is given when the datadir is not writable during setup
|
||||
*/
|
||||
public function testDataDirNotWritableSetup() {
|
||||
chmod($this->datadir, 0300);
|
||||
$result = \OC_Util::checkServer($this->getConfig(array(
|
||||
'installed' => false,
|
||||
'version' => implode('.', OC_Util::getVersion())
|
||||
)));
|
||||
chmod($this->datadir, 0700); //needed for cleanup
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue