diff options
-rw-r--r-- | lib/private/Settings/Admin/Server.php | 2 | ||||
-rw-r--r-- | settings/templates/admin/server.php | 17 | ||||
-rw-r--r-- | tests/lib/Settings/Admin/ServerTest.php | 4 |
3 files changed, 20 insertions, 3 deletions
diff --git a/lib/private/Settings/Admin/Server.php b/lib/private/Settings/Admin/Server.php index 6b381ab48ed..8b1477a0257 100644 --- a/lib/private/Settings/Admin/Server.php +++ b/lib/private/Settings/Admin/Server.php @@ -124,6 +124,8 @@ class Server implements ISettings { 'cron_log' => $this->config->getSystemValue('cron_log', true), 'lastcron' => $this->config->getAppValue('core', 'lastcron', false), 'cronErrors' => $this->config->getAppValue('core', 'cronErrors'), + 'cli_based_cron_possible' => function_exists('posix_getpwuid'), + 'cli_based_cron_user' => function_exists('posix_getpwuid') ? posix_getpwuid(fileowner(\OC::$configDir . 'config.php'))['name'] : '', ]; return new TemplateResponse('settings', 'admin/server', $parameters, ''); diff --git a/settings/templates/admin/server.php b/settings/templates/admin/server.php index 02d247e1b18..430ca6ac8e2 100644 --- a/settings/templates/admin/server.php +++ b/settings/templates/admin/server.php @@ -201,9 +201,22 @@ <input type="radio" name="mode" value="cron" class="radio" id="backgroundjobs_cron" <?php if ($_['backgroundjobs_mode'] === "cron") { print_unescaped('checked="checked"'); - } ?>> + } + if (!$_['cli_based_cron_possible']) { + print_unescaped('disabled'); + }?>> <label for="backgroundjobs_cron">Cron</label><br/> - <em><?php p($l->t("Use system's cron service to call the cron.php file every 15 minutes.")); ?></em> + <em><?php p($l->t("Use system's cron service to call the cron.php file every 15 minutes.")); ?> + <?php if($_['cli_based_cron_possible']) { + p($l->t('The cron.php needs to be executed by the system user "%s".', [$_['cli_based_cron_user']])); + } else { + print_unescaped(str_replace( + ['{linkstart}', '{linkend}'], + ['<a href="http://php.net/manual/en/book.posix.php">', ' ↗</a>'], + $l->t('To run this you need the PHP posix extension. See {linkstart}PHP documentation{linkend} for more details.') + )); + } ?></em> + </p> </div> diff --git a/tests/lib/Settings/Admin/ServerTest.php b/tests/lib/Settings/Admin/ServerTest.php index 874422307e0..43892c408b0 100644 --- a/tests/lib/Settings/Admin/ServerTest.php +++ b/tests/lib/Settings/Admin/ServerTest.php @@ -136,7 +136,9 @@ class ServerTest extends TestCase { 'backgroundjobs_mode' => 'ajax', 'cron_log' => true, 'lastcron' => false, - 'cronErrors' => '' + 'cronErrors' => '', + 'cli_based_cron_possible' => true, + 'cli_based_cron_user' => function_exists('posix_getpwuid') ? posix_getpwuid(fileowner(\OC::$configDir . 'config.php'))['name'] : '', // to not explode here because of posix extension not being disabled - which is already checked in the line above ], '' ); |