summaryrefslogtreecommitdiffstats
path: root/lib/base.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-03-18 11:48:51 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2015-03-18 11:58:18 +0100
commit0bed187613915820de1862f8a30e887bfe81f2de (patch)
treedcfbd4afda2d64787f3f7ae99f60fee73f365550 /lib/base.php
parent8a95bf18b7f870541089ad51764baa8679579e4c (diff)
downloadnextcloud-server-0bed187613915820de1862f8a30e887bfe81f2de.tar.gz
nextcloud-server-0bed187613915820de1862f8a30e887bfe81f2de.zip
Stop executing, when 3rdparty is missing or apps directory is invalid
Diffstat (limited to 'lib/base.php')
-rw-r--r--lib/base.php31
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/base.php b/lib/base.php
index 107ae059bb1..00117918c87 100644
--- a/lib/base.php
+++ b/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();
}