diff --git a/console.php b/console.php index a4d829f683..7536908a5c 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 0000000000..9d0db3a726 --- /dev/null +++ b/core/command/check.php @@ -0,0 +1,39 @@ +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 67fdb6f808..701fb10d1b 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 be397e5244..042419eff1 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);