diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-03-18 11:48:51 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-03-18 11:58:18 +0100 |
commit | 0bed187613915820de1862f8a30e887bfe81f2de (patch) | |
tree | dcfbd4afda2d64787f3f7ae99f60fee73f365550 /lib/base.php | |
parent | 8a95bf18b7f870541089ad51764baa8679579e4c (diff) | |
download | nextcloud-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.php | 31 |
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(); } |