aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2024-02-28 18:40:23 +0100
committerGitHub <noreply@github.com>2024-02-28 18:40:23 +0100
commit6fc9fec456f9f26c641203eae94b1070f82ca6f1 (patch)
tree288821b8453a59d1393c933052e6a496b3e1a06d
parentf2f1074396b12be31f84a3db30f7e95c501c4aab (diff)
parent9123d6fffeec7bf20bea26a30121f578164d72bb (diff)
downloadnextcloud-server-6fc9fec456f9f26c641203eae94b1070f82ca6f1.tar.gz
nextcloud-server-6fc9fec456f9f26c641203eae94b1070f82ca6f1.zip
Merge pull request #27613 from Dreamsorcerer/patch-2
-rw-r--r--console.php31
-rw-r--r--cron.php8
2 files changed, 26 insertions, 13 deletions
diff --git a/console.php b/console.php
index d30db9adb6e..68647a874c4 100644
--- a/console.php
+++ b/console.php
@@ -57,23 +57,36 @@ try {
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 @@ try {
}
$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 4e95481deb6..6f61bb0c2a2 100644
--- a/cron.php
+++ b/cron.php
@@ -115,11 +115,11 @@ try {
}
$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);
}