diff --git a/console.php b/console.php
index a4d829f683a5ff1993b8687dcf99f3de6b5e0605..7536908a5c103f313af1221522dae7b38ba36ff7 100644
--- a/console.php
+++ b/console.php
@@ -24,6 +24,7 @@
  */
 
 use Symfony\Component\Console\Application;
+use Symfony\Component\Console\Input\ArgvInput;
 
 define('OC_CONSOLE', 1);
 
@@ -71,6 +72,18 @@ try {
 	} else {
 		echo "ownCloud is not installed - only a limited number of commands are available" . PHP_EOL;
 	}
+	$input = new ArgvInput();
+	if ($input->getFirstArgument() !== 'check') {
+		$errors = \OC_Util::checkServer(\OC::$server->getConfig());
+		if (!empty($errors)) {
+			foreach ($errors as $error) {
+				echo $error['error'] . "\n";
+				echo $error['hint'] . "\n\n";
+			}
+			exit(1);
+		}
+	}
+
 	$application->run();
 } catch (Exception $ex) {
 	echo "An unhandled exception has been thrown:" . PHP_EOL;
diff --git a/core/command/check.php b/core/command/check.php
new file mode 100644
index 0000000000000000000000000000000000000000..9d0db3a726c387e8ffab799a64653c34be581b8a
--- /dev/null
+++ b/core/command/check.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace OC\Core\Command;
+
+use OCP\IConfig;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Check extends Command {
+	/**
+	 * @var IConfig
+	 */
+	private $config;
+
+	public function __construct(IConfig $config) {
+		parent::__construct();
+		$this->config = $config;
+	}
+
+	protected function configure() {
+		$this
+			->setName('check')
+			->setDescription('check dependencies of the server environment')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		$errors = \OC_Util::checkServer($this->config);
+		if (!empty($errors)) {
+			$errors = array_map( function($items) {
+				return (string)$items['error'];
+			}, $errors);
+			echo json_encode($errors);
+			return 1;
+		}
+		return 0;
+	}
+}
diff --git a/core/register_command.php b/core/register_command.php
index 67fdb6f808e4343518a6ac85ab818b5fc8e0366f..701fb10d1ba84a901bc398c436f69b60f1f8758d 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -26,6 +26,7 @@
 
 /** @var $application Symfony\Component\Console\Application */
 $application->add(new OC\Core\Command\Status);
+$application->add(new OC\Core\Command\Check(\OC::$server->getConfig()));
 $application->add(new OC\Core\Command\App\CheckCode());
 $application->add(new OC\Core\Command\L10n\CreateJs());
 
diff --git a/lib/base.php b/lib/base.php
index be397e524496fd5f0921291331a12b4c2985c3ff..042419eff1d2c0f571f3fe30e3d6d4001273ae17 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -588,35 +588,36 @@ class OC {
 			ini_set('session.cookie_secure', true);
 		}
 
-		$errors = OC_Util::checkServer(\OC::$server->getConfig());
-		if (count($errors) > 0) {
-			if (self::$CLI) {
-				// Convert l10n string into regular string for usage in database
-				$staticErrors = [];
-				foreach ($errors as $error) {
-					echo $error['error'] . "\n";
-					echo $error['hint'] . "\n\n";
-					$staticErrors[] = [
-						'error' => (string) $error['error'],
-						'hint' => (string) $error['hint'],
-					];
-				}
+		if (!defined('OC_CONSOLE')) {
+			$errors = OC_Util::checkServer(\OC::$server->getConfig());
+			if (count($errors) > 0) {
+				if (self::$CLI) {
+					// Convert l10n string into regular string for usage in database
+					$staticErrors = [];
+					foreach ($errors as $error) {
+						echo $error['error'] . "\n";
+						echo $error['hint'] . "\n\n";
+						$staticErrors[] = [
+							'error' => (string)$error['error'],
+							'hint' => (string)$error['hint'],
+						];
+					}
 
-				try {
-					\OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
-				} catch(\Exception $e) {
-					echo('Writing to database failed');
+					try {
+						\OC::$server->getConfig()->setAppValue('core', 'cronErrors', json_encode($staticErrors));
+					} catch (\Exception $e) {
+						echo('Writing to database failed');
+					}
+					exit(1);
+				} else {
+					OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+					OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+					exit;
 				}
-				exit(1);
-			} else {
-				OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
-				OC_Template::printGuestPage('', 'error', array('errors' => $errors));
-				exit;
-			}
-		} elseif(self::$CLI && \OC::$server->getConfig()->getSystemValue('installed', false)) {
+			} elseif (self::$CLI && \OC::$server->getConfig()->getSystemValue('installed', false)) {
 				\OC::$server->getConfig()->deleteAppValue('core', 'cronErrors');
+			}
 		}
-
 		//try to set the session lifetime
 		$sessionLifeTime = self::getSessionLifeTime();
 		@ini_set('gc_maxlifetime', (string)$sessionLifeTime);