Merge pull request #14993 from owncloud/stop-on-missing-deps
Stop executing, when 3rdparty is missing or apps directory is invalid
This commit is contained in:
commit
a87cc90d1e
2 changed files with 41 additions and 30 deletions
31
lib/base.php
31
lib/base.php
|
@ -80,6 +80,10 @@ class OC {
|
|||
*/
|
||||
public static $server = null;
|
||||
|
||||
/**
|
||||
* @throws \RuntimeException when the 3rdparty directory is missing or
|
||||
* the app path list is empty or contains an invalid path
|
||||
*/
|
||||
public static function initPaths() {
|
||||
// calculate the root directories
|
||||
OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4));
|
||||
|
@ -155,10 +159,9 @@ class OC {
|
|||
}
|
||||
}
|
||||
if (empty(OC::$THIRDPARTYROOT) || !file_exists(OC::$THIRDPARTYROOT)) {
|
||||
echo('3rdparty directory not found! Please put the ownCloud 3rdparty'
|
||||
throw new \RuntimeException('3rdparty directory not found! Please put the ownCloud 3rdparty'
|
||||
. ' folder in the ownCloud folder or the folder above.'
|
||||
. ' You can also configure the location in the config.php file.');
|
||||
return;
|
||||
}
|
||||
|
||||
// search the apps folder
|
||||
|
@ -182,12 +185,17 @@ class OC {
|
|||
}
|
||||
|
||||
if (empty(OC::$APPSROOTS)) {
|
||||
throw new Exception('apps directory not found! Please put the ownCloud apps folder in the ownCloud folder'
|
||||
throw new \RuntimeException('apps directory not found! Please put the ownCloud apps folder in the ownCloud folder'
|
||||
. ' or the folder above. You can also configure the location in the config.php file.');
|
||||
}
|
||||
$paths = array();
|
||||
foreach (OC::$APPSROOTS as $path) {
|
||||
$paths[] = $path['path'];
|
||||
if (!is_dir($path['path'])) {
|
||||
throw new \RuntimeException(sprintf('App directory "%s" not found! Please put the ownCloud apps folder in the'
|
||||
. ' ownCloud folder or the folder above. You can also configure the location in the'
|
||||
. ' config.php file.', $path['path']));
|
||||
}
|
||||
}
|
||||
|
||||
// set the right include path
|
||||
|
@ -465,17 +473,20 @@ class OC {
|
|||
|
||||
self::$CLI = (php_sapi_name() == 'cli');
|
||||
|
||||
self::initPaths();
|
||||
|
||||
// setup 3rdparty autoloader
|
||||
$vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php';
|
||||
if (file_exists($vendorAutoLoad)) {
|
||||
try {
|
||||
self::initPaths();
|
||||
// setup 3rdparty autoloader
|
||||
$vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php';
|
||||
if (!file_exists($vendorAutoLoad)) {
|
||||
throw new \RuntimeException('Composer autoloader not found, unable to continue. Check the folder "3rdparty".');
|
||||
}
|
||||
require_once $vendorAutoLoad;
|
||||
} else {
|
||||
|
||||
} catch (\RuntimeException $e) {
|
||||
OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
|
||||
// we can't use the template error page here, because this needs the
|
||||
// DI container which isn't available yet
|
||||
print('Composer autoloader not found, unable to continue. Check the folder "3rdparty".');
|
||||
print($e->getMessage());
|
||||
exit();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
<?php
|
||||
$CONFIG = array (
|
||||
"appstoreenabled" => false,
|
||||
'apps_paths' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'path' => OC::$SERVERROOT.'/apps',
|
||||
'url' => '/apps',
|
||||
'writable' => true,
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'path' => OC::$SERVERROOT.'/apps2',
|
||||
'url' => '/apps2',
|
||||
'writable' => false,
|
||||
)
|
||||
),
|
||||
);
|
||||
$CONFIG = [
|
||||
'appstoreenabled' => false,
|
||||
'apps_paths' => [
|
||||
[
|
||||
'path' => OC::$SERVERROOT . '/apps',
|
||||
'url' => '/apps',
|
||||
'writable' => true,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
if(substr(strtolower(PHP_OS), 0, 3) == "win") {
|
||||
$CONFIG['openssl'] = array( 'config' => OC::$SERVERROOT.'/tests/data/openssl.cnf');
|
||||
if (is_dir(OC::$SERVERROOT.'/apps2')) {
|
||||
$CONFIG['apps_paths'][] = [
|
||||
'path' => OC::$SERVERROOT . '/apps2',
|
||||
'url' => '/apps2',
|
||||
'writable' => false,
|
||||
];
|
||||
}
|
||||
|
||||
if (substr(strtolower(PHP_OS), 0, 3) === 'win') {
|
||||
$CONFIG['openssl'] = ['config' => OC::$SERVERROOT . '/tests/data/openssl.cnf'];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue