Don't complain about non-writable datadirs before we're installed
This commit is contained in:
parent
6fa3280c2a
commit
23dd7cb51d
|
@ -463,26 +463,28 @@ class OC_Util {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Create root dir.
|
||||||
if (!is_dir($CONFIG_DATADIRECTORY)) {
|
if ($config->getSystemValue('installed', false)) {
|
||||||
$success = @mkdir($CONFIG_DATADIRECTORY);
|
if (!is_dir($CONFIG_DATADIRECTORY)) {
|
||||||
if ($success) {
|
$success = @mkdir($CONFIG_DATADIRECTORY);
|
||||||
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
|
if ($success) {
|
||||||
} else {
|
$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(
|
$errors[] = array(
|
||||||
'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)),
|
'error' => 'Data directory (' . $CONFIG_DATADIRECTORY . ') not writable by ownCloud',
|
||||||
'hint' => $l->t('This can usually be fixed by '
|
'hint' => $permissionsHint
|
||||||
. '<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.',
|
|
||||||
array(OC_Helper::linkToDocs('admin-dir_permissions')))
|
|
||||||
);
|
);
|
||||||
|
} 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()) {
|
if (!OC_Util::isSetLocaleWorking()) {
|
||||||
|
|
|
@ -19,6 +19,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
||||||
*/
|
*/
|
||||||
protected function getConfig($systemOptions) {
|
protected function getConfig($systemOptions) {
|
||||||
$systemOptions['datadirectory'] = $this->datadir;
|
$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')
|
$config = $this->getMockBuilder('\OCP\IConfig')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@ -35,6 +36,7 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
||||||
$this->datadir = \OC_Helper::tmpFolder();
|
$this->datadir = \OC_Helper::tmpFolder();
|
||||||
|
|
||||||
file_put_contents($this->datadir . '/.ocdata', '');
|
file_put_contents($this->datadir . '/.ocdata', '');
|
||||||
|
\OC::$server->getSession()->set('checkServer_succeeded', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown() {
|
public function tearDown() {
|
||||||
|
@ -121,4 +123,39 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase {
|
||||||
$this->assertCount(1, $result);
|
$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 New Issue