diff --git a/console.php b/console.php index d30db9adb6ee5..68647a874c45e 100644 --- a/console.php +++ b/console.php @@ -57,23 +57,36 @@ function exceptionHandler($exception) { exit(1); } + $config = \OC::$server->getConfig(); set_exception_handler('exceptionHandler'); if (!function_exists('posix_getuid')) { echo "The posix extensions are required - see https://www.php.net/manual/en/book.posix.php" . PHP_EOL; exit(1); } - $user = posix_getuid(); - $configUser = fileowner(OC::$configDir . 'config.php'); - if ($user !== $configUser) { - echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL; - echo "Current user id: " . $user . PHP_EOL; - echo "Owner id of config.php: " . $configUser . PHP_EOL; - echo "Try adding 'sudo -u #" . $configUser . "' to the beginning of the command (without the single quotes)" . PHP_EOL; - echo "If running with 'docker exec' try adding the option '-u " . $configUser . "' to the docker command (without the single quotes)" . PHP_EOL; + + // Check if the data directory is available and the server is installed + $dataDirectory = $config->getSystemValueString('datadirectory', \OC::$SERVERROOT . '/data'); + if ($config->getSystemValueBool('installed', false) && !is_dir($dataDirectory)) { + echo "Data directory (" . $dataDirectory . ") not found" . PHP_EOL; exit(1); } + // Check if the user running the console is the same as the user that owns the data directory + // If the data directory does not exist, the server is not setup yet and we can skip. + if (is_dir($dataDirectory)) { + $user = posix_getuid(); + $dataDirectoryUser = fileowner($dataDirectory); + if ($user !== $dataDirectoryUser) { + echo "Console has to be executed with the user that owns the data directory" . PHP_EOL; + echo "Current user id: " . $user . PHP_EOL; + echo "Owner id of the data directory: " . $dataDirectoryUser . PHP_EOL; + echo "Try adding 'sudo -u #" . $dataDirectoryUser . "' to the beginning of the command (without the single quotes)" . PHP_EOL; + echo "If running with 'docker exec' try adding the option '-u " . $dataDirectoryUser . "' to the docker command (without the single quotes)" . PHP_EOL; + exit(1); + } + } + $oldWorkingDir = getcwd(); if ($oldWorkingDir === false) { echo "This script can be run from the Nextcloud root directory only." . PHP_EOL; @@ -90,7 +103,7 @@ function exceptionHandler($exception) { } $application = new Application( - \OC::$server->getConfig(), + $config, \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class), \OC::$server->getRequest(), \OC::$server->get(\Psr\Log\LoggerInterface::class), diff --git a/cron.php b/cron.php index 4e95481deb624..6f61bb0c2a21b 100644 --- a/cron.php +++ b/cron.php @@ -115,11 +115,11 @@ } $user = posix_getuid(); - $configUser = fileowner(OC::$configDir . 'config.php'); - if ($user !== $configUser) { - echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL; + $dataDirectoryUser = fileowner($config->getSystemValueString('datadirectory', \OC::$SERVERROOT . '/data')); + if ($user !== $dataDirectoryUser) { + echo "Console has to be executed with the user that owns the data directory" . PHP_EOL; echo "Current user id: " . $user . PHP_EOL; - echo "Owner id of config.php: " . $configUser . PHP_EOL; + echo "Owner id of the data directory: " . $dataDirectoryUser . PHP_EOL; exit(1); }