]> source.dussan.org Git - nextcloud-server.git/commitdiff
Migrate opcache check to new SetupCheck API
authorCôme Chilliet <come.chilliet@nextcloud.com>
Thu, 16 Nov 2023 16:05:24 +0000 (17:05 +0100)
committerCôme Chilliet <come.chilliet@nextcloud.com>
Mon, 8 Jan 2024 14:09:09 +0000 (15:09 +0100)
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
apps/settings/composer/composer/autoload_classmap.php
apps/settings/composer/composer/autoload_static.php
apps/settings/lib/AppInfo/Application.php
apps/settings/lib/Controller/CheckSetupController.php
apps/settings/lib/SetupChecks/PhpOpcacheSetup.php [new file with mode: 0644]
apps/settings/tests/Controller/CheckSetupControllerTest.php
core/js/setupchecks.js
core/js/tests/specs/setupchecksSpec.js

index 4ad4e2b6525586ccc0c0045498e294f365f61cd4..b32aab9756955a955f435a19d2c05c69dc84db73 100644 (file)
@@ -95,6 +95,7 @@ return array(
     'OCA\\Settings\\SetupChecks\\PhpGetEnv' => $baseDir . '/../lib/SetupChecks/PhpGetEnv.php',
     'OCA\\Settings\\SetupChecks\\PhpMemoryLimit' => $baseDir . '/../lib/SetupChecks/PhpMemoryLimit.php',
     'OCA\\Settings\\SetupChecks\\PhpModules' => $baseDir . '/../lib/SetupChecks/PhpModules.php',
+    'OCA\\Settings\\SetupChecks\\PhpOpcacheSetup' => $baseDir . '/../lib/SetupChecks/PhpOpcacheSetup.php',
     'OCA\\Settings\\SetupChecks\\PhpOutdated' => $baseDir . '/../lib/SetupChecks/PhpOutdated.php',
     'OCA\\Settings\\SetupChecks\\PhpOutputBuffering' => $baseDir . '/../lib/SetupChecks/PhpOutputBuffering.php',
     'OCA\\Settings\\SetupChecks\\RandomnessSecure' => $baseDir . '/../lib/SetupChecks/RandomnessSecure.php',
index dc4a2b21b3508d9afa193ab7942d8d077608acfb..09e0d724e4ccb5cb1354daf4229b3429adbdfea0 100644 (file)
@@ -110,6 +110,7 @@ class ComposerStaticInitSettings
         'OCA\\Settings\\SetupChecks\\PhpGetEnv' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpGetEnv.php',
         'OCA\\Settings\\SetupChecks\\PhpMemoryLimit' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpMemoryLimit.php',
         'OCA\\Settings\\SetupChecks\\PhpModules' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpModules.php',
+        'OCA\\Settings\\SetupChecks\\PhpOpcacheSetup' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpOpcacheSetup.php',
         'OCA\\Settings\\SetupChecks\\PhpOutdated' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpOutdated.php',
         'OCA\\Settings\\SetupChecks\\PhpOutputBuffering' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpOutputBuffering.php',
         'OCA\\Settings\\SetupChecks\\RandomnessSecure' => __DIR__ . '/..' . '/../lib/SetupChecks/RandomnessSecure.php',
index 0da2485aa00a715330b761eeaee02e3c99d1bab4..7e963e355930b70a80e4ab0a8ea9c838a3ff3109 100644 (file)
@@ -67,6 +67,7 @@ use OCA\Settings\SetupChecks\PhpFreetypeSupport;
 use OCA\Settings\SetupChecks\PhpGetEnv;
 use OCA\Settings\SetupChecks\PhpMemoryLimit;
 use OCA\Settings\SetupChecks\PhpModules;
+use OCA\Settings\SetupChecks\PhpOpcacheSetup;
 use OCA\Settings\SetupChecks\PhpOutdated;
 use OCA\Settings\SetupChecks\PhpOutputBuffering;
 use OCA\Settings\SetupChecks\RandomnessSecure;
@@ -182,6 +183,7 @@ class Application extends App implements IBootstrap {
                $context->registerSetupCheck(PhpGetEnv::class);
                $context->registerSetupCheck(PhpMemoryLimit::class);
                $context->registerSetupCheck(PhpModules::class);
+               $context->registerSetupCheck(PhpOpcacheSetup::class);
                $context->registerSetupCheck(PhpOutdated::class);
                $context->registerSetupCheck(PhpOutputBuffering::class);
                $context->registerSetupCheck(RandomnessSecure::class);
index 14f7068ce59a1fb6d3f761a90ef9d78e46182ecb..0cb8c50d387281ae6d5a812a2087a4c709b23a2e 100644 (file)
@@ -45,7 +45,6 @@
  */
 namespace OCA\Settings\Controller;
 
-use bantu\IniGetWrapper\IniGetWrapper;
 use DirectoryIterator;
 use GuzzleHttp\Exception\ClientException;
 use OC;
@@ -91,8 +90,6 @@ class CheckSetupController extends Controller {
        private $lockingProvider;
        /** @var IDateTimeFormatter */
        private $dateTimeFormatter;
-       /** @var IniGetWrapper */
-       private $iniGetWrapper;
        /** @var ITempManager */
        private $tempManager;
        /** @var IManager */
@@ -114,7 +111,6 @@ class CheckSetupController extends Controller {
                IEventDispatcher $dispatcher,
                ILockingProvider $lockingProvider,
                IDateTimeFormatter $dateTimeFormatter,
-               IniGetWrapper $iniGetWrapper,
                ITempManager $tempManager,
                IManager $manager,
                IAppManager $appManager,
@@ -131,7 +127,6 @@ class CheckSetupController extends Controller {
                $this->dispatcher = $dispatcher;
                $this->lockingProvider = $lockingProvider;
                $this->dateTimeFormatter = $dateTimeFormatter;
-               $this->iniGetWrapper = $iniGetWrapper;
                $this->tempManager = $tempManager;
                $this->manager = $manager;
                $this->appManager = $appManager;
@@ -328,79 +323,6 @@ Raw output
                );
        }
 
-       /**
-        * Checks whether a PHP OPcache is properly set up
-        * @return string[] The list of OPcache setup recommendations
-        */
-       protected function getOpcacheSetupRecommendations(): array {
-               // If the module is not loaded, return directly to skip inapplicable checks
-               if (!extension_loaded('Zend OPcache')) {
-                       return [$this->l10n->t('The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation.')];
-               }
-
-               $recommendations = [];
-
-               // Check whether Nextcloud is allowed to use the OPcache API
-               $isPermitted = true;
-               $permittedPath = $this->iniGetWrapper->getString('opcache.restrict_api');
-               if (isset($permittedPath) && $permittedPath !== '' && !str_starts_with(\OC::$SERVERROOT, rtrim($permittedPath, '/'))) {
-                       $isPermitted = false;
-               }
-
-               if (!$this->iniGetWrapper->getBool('opcache.enable')) {
-                       $recommendations[] = $this->l10n->t('OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration.');
-
-                       // Check for saved comments only when OPcache is currently disabled. If it was enabled, opcache.save_comments=0 would break Nextcloud in the first place.
-                       if (!$this->iniGetWrapper->getBool('opcache.save_comments')) {
-                               $recommendations[] = $this->l10n->t('OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function.');
-                       }
-
-                       if (!$isPermitted) {
-                               $recommendations[] = $this->l10n->t('Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades.');
-                       }
-               } elseif (!$isPermitted) {
-                       $recommendations[] = $this->l10n->t('Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades.');
-               } elseif ($this->iniGetWrapper->getBool('opcache.file_cache_only')) {
-                       $recommendations[] = $this->l10n->t('The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only.');
-               } else {
-                       // Check whether opcache_get_status has been explicitly disabled an in case skip usage based checks
-                       $disabledFunctions = $this->iniGetWrapper->getString('disable_functions');
-                       if (isset($disabledFunctions) && str_contains($disabledFunctions, 'opcache_get_status')) {
-                               return [];
-                       }
-
-                       $status = opcache_get_status(false);
-
-                       // Recommend to raise value, if more than 90% of max value is reached
-                       if (
-                               empty($status['opcache_statistics']['max_cached_keys']) ||
-                               ($status['opcache_statistics']['num_cached_keys'] / $status['opcache_statistics']['max_cached_keys'] > 0.9)
-                       ) {
-                               $recommendations[] = $this->l10n->t('The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.max_accelerated_files') ?: 'currently')]);
-                       }
-
-                       if (
-                               empty($status['memory_usage']['free_memory']) ||
-                               ($status['memory_usage']['used_memory'] / $status['memory_usage']['free_memory'] > 9)
-                       ) {
-                               $recommendations[] = $this->l10n->t('The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.memory_consumption') ?: 'currently')]);
-                       }
-
-                       if (
-                               // Do not recommend to raise the interned strings buffer size above a quarter of the total OPcache size
-                               ($this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') < $this->iniGetWrapper->getNumeric('opcache.memory_consumption') / 4) &&
-                               (
-                                       empty($status['interned_strings_usage']['free_memory']) ||
-                                       ($status['interned_strings_usage']['used_memory'] / $status['interned_strings_usage']['free_memory'] > 9)
-                               )
-                       ) {
-                               $recommendations[] = $this->l10n->t('The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') ?: 'currently')]);
-                       }
-               }
-
-               return $recommendations;
-       }
-
        protected function getSuggestedOverwriteCliURL(): string {
                $currentOverwriteCliUrl = $this->config->getSystemValue('overwrite.cli.url', '');
                $suggestedOverwriteCliUrl = $this->request->getServerProtocol() . '://' . $this->request->getInsecureServerHost() . \OC::$WEBROOT;
@@ -568,7 +490,6 @@ Raw output
                                'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled(),
                                'hasPassedCodeIntegrityCheck' => $this->checker->hasPassedCheck(),
                                'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'),
-                               'OpcacheSetupRecommendations' => $this->getOpcacheSetupRecommendations(),
                                'isSettimelimitAvailable' => $this->isSettimelimitAvailable(),
                                'appDirsWithDifferentOwner' => $this->getAppDirsWithDifferentOwner(),
                                'isImagickEnabled' => $this->isImagickEnabled(),
diff --git a/apps/settings/lib/SetupChecks/PhpOpcacheSetup.php b/apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
new file mode 100644 (file)
index 0000000..faf686e
--- /dev/null
@@ -0,0 +1,134 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2023 Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Settings\SetupChecks;
+
+use bantu\IniGetWrapper\IniGetWrapper;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\SetupCheck\ISetupCheck;
+use OCP\SetupCheck\SetupResult;
+
+class PhpOpcacheSetup implements ISetupCheck {
+       public function __construct(
+               private IL10N $l10n,
+               private IURLGenerator $urlGenerator,
+               private IniGetWrapper $iniGetWrapper,
+       ) {
+       }
+
+       public function getName(): string {
+               return $this->l10n->t('PHP opcache');
+       }
+
+       public function getCategory(): string {
+               return 'php';
+       }
+
+       /**
+        * Checks whether a PHP OPcache is properly set up
+        * @return string[] The list of OPcache setup recommendations
+        */
+       protected function getOpcacheSetupRecommendations(): array {
+               // If the module is not loaded, return directly to skip inapplicable checks
+               if (!extension_loaded('Zend OPcache')) {
+                       return [$this->l10n->t('The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation.')];
+               }
+
+               $recommendations = [];
+
+               // Check whether Nextcloud is allowed to use the OPcache API
+               $isPermitted = true;
+               $permittedPath = $this->iniGetWrapper->getString('opcache.restrict_api');
+               if (isset($permittedPath) && $permittedPath !== '' && !str_starts_with(\OC::$SERVERROOT, rtrim($permittedPath, '/'))) {
+                       $isPermitted = false;
+               }
+
+               if (!$this->iniGetWrapper->getBool('opcache.enable')) {
+                       $recommendations[] = $this->l10n->t('OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration.');
+
+                       // Check for saved comments only when OPcache is currently disabled. If it was enabled, opcache.save_comments=0 would break Nextcloud in the first place.
+                       if (!$this->iniGetWrapper->getBool('opcache.save_comments')) {
+                               $recommendations[] = $this->l10n->t('OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function.');
+                       }
+
+                       if (!$isPermitted) {
+                               $recommendations[] = $this->l10n->t('Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades.');
+                       }
+               } elseif (!$isPermitted) {
+                       $recommendations[] = $this->l10n->t('Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades.');
+               } elseif ($this->iniGetWrapper->getBool('opcache.file_cache_only')) {
+                       $recommendations[] = $this->l10n->t('The shared memory based OPcache is disabled. For better performance, it is recommended to apply <code>opcache.file_cache_only=0</code> to your PHP configuration and use the file cache as second level cache only.');
+               } else {
+                       // Check whether opcache_get_status has been explicitly disabled an in case skip usage based checks
+                       $disabledFunctions = $this->iniGetWrapper->getString('disable_functions');
+                       if (isset($disabledFunctions) && str_contains($disabledFunctions, 'opcache_get_status')) {
+                               return [];
+                       }
+
+                       $status = opcache_get_status(false);
+
+                       // Recommend to raise value, if more than 90% of max value is reached
+                       if (
+                               empty($status['opcache_statistics']['max_cached_keys']) ||
+                               ($status['opcache_statistics']['num_cached_keys'] / $status['opcache_statistics']['max_cached_keys'] > 0.9)
+                       ) {
+                               $recommendations[] = $this->l10n->t('The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.max_accelerated_files') ?: 'currently')]);
+                       }
+
+                       if (
+                               empty($status['memory_usage']['free_memory']) ||
+                               ($status['memory_usage']['used_memory'] / $status['memory_usage']['free_memory'] > 9)
+                       ) {
+                               $recommendations[] = $this->l10n->t('The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.memory_consumption') ?: 'currently')]);
+                       }
+
+                       if (
+                               // Do not recommend to raise the interned strings buffer size above a quarter of the total OPcache size
+                               ($this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') < $this->iniGetWrapper->getNumeric('opcache.memory_consumption') / 4) &&
+                               (
+                                       empty($status['interned_strings_usage']['free_memory']) ||
+                                       ($status['interned_strings_usage']['used_memory'] / $status['interned_strings_usage']['free_memory'] > 9)
+                               )
+                       ) {
+                               $recommendations[] = $this->l10n->t('The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') ?: 'currently')]);
+                       }
+               }
+
+               return $recommendations;
+       }
+
+       public function run(): SetupResult {
+               $recommendations = $this->getOpcacheSetupRecommendations();
+               if (!empty($recommendations)) {
+                       return SetupResult::error(
+                               $this->l10n->t('The PHP OPcache module is not properly configured. %s.', implode("\n", $recommendations)),
+                               $this->urlGenerator->linkToDocs('admin-php-opcache')
+                       );
+               } else {
+                       return SetupResult::success($this->l10n->t('Correctly configured'));
+               }
+       }
+}
index a4cd6bb0a961eb85c2e67dc596596644ed722253..d732b615a0ea704468a21216db181b1f32b0f626 100644 (file)
@@ -34,7 +34,6 @@
  */
 namespace OCA\Settings\Tests\Controller;
 
-use bantu\IniGetWrapper\IniGetWrapper;
 use OC;
 use OC\IntegrityCheck\Checker;
 use OCA\Settings\Controller\CheckSetupController;
@@ -89,8 +88,6 @@ class CheckSetupControllerTest extends TestCase {
        private $lockingProvider;
        /** @var IDateTimeFormatter|\PHPUnit\Framework\MockObject\MockObject */
        private $dateTimeFormatter;
-       /** @var IniGetWrapper|\PHPUnit\Framework\MockObject\MockObject */
-       private $iniGetWrapper;
        /** @var ITempManager|\PHPUnit\Framework\MockObject\MockObject */
        private $tempManager;
        /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
@@ -133,7 +130,6 @@ class CheckSetupControllerTest extends TestCase {
                $this->logger = $this->getMockBuilder(LoggerInterface::class)->getMock();
                $this->lockingProvider = $this->getMockBuilder(ILockingProvider::class)->getMock();
                $this->dateTimeFormatter = $this->getMockBuilder(IDateTimeFormatter::class)->getMock();
-               $this->iniGetWrapper = $this->getMockBuilder(IniGetWrapper::class)->getMock();
                $this->tempManager = $this->getMockBuilder(ITempManager::class)->getMock();
                $this->notificationManager = $this->getMockBuilder(IManager::class)->getMock();
                $this->appManager = $this->createMock(IAppManager::class);
@@ -152,7 +148,6 @@ class CheckSetupControllerTest extends TestCase {
                                $this->dispatcher,
                                $this->lockingProvider,
                                $this->dateTimeFormatter,
-                               $this->iniGetWrapper,
                                $this->tempManager,
                                $this->notificationManager,
                                $this->appManager,
@@ -164,7 +159,6 @@ class CheckSetupControllerTest extends TestCase {
                                'getSuggestedOverwriteCliURL',
                                'getCurlVersion',
                                'isPhpOutdated',
-                               'getOpcacheSetupRecommendations',
                                'isPHPMailerUsed',
                                'getAppDirsWithDifferentOwner',
                                'isImagickEnabled',
@@ -208,10 +202,6 @@ class CheckSetupControllerTest extends TestCase {
                        ->method('getHeader');
                $this->clientService->expects($this->never())
                        ->method('newClient');
-               $this->checkSetupController
-                       ->expects($this->once())
-                       ->method('getOpcacheSetupRecommendations')
-                       ->willReturn(['recommendation1', 'recommendation2']);
                $this->checkSetupController
                        ->expects($this->once())
                        ->method('getSuggestedOverwriteCliURL')
@@ -299,7 +289,6 @@ class CheckSetupControllerTest extends TestCase {
                                'isCorrectMemcachedPHPModuleInstalled' => true,
                                'hasPassedCodeIntegrityCheck' => true,
                                'codeIntegrityCheckerDocumentation' => 'http://docs.example.org/server/go.php?to=admin-code-integrity',
-                               'OpcacheSetupRecommendations' => ['recommendation1', 'recommendation2'],
                                'isSettimelimitAvailable' => true,
                                'appDirsWithDifferentOwner' => [],
                                'isImagickEnabled' => false,
@@ -330,7 +319,6 @@ class CheckSetupControllerTest extends TestCase {
                                $this->dispatcher,
                                $this->lockingProvider,
                                $this->dateTimeFormatter,
-                               $this->iniGetWrapper,
                                $this->tempManager,
                                $this->notificationManager,
                                $this->appManager,
@@ -1054,7 +1042,6 @@ Array
                        $this->dispatcher,
                        $this->lockingProvider,
                        $this->dateTimeFormatter,
-                       $this->iniGetWrapper,
                        $this->tempManager,
                        $this->notificationManager,
                        $this->appManager,
@@ -1105,7 +1092,6 @@ Array
                        $this->dispatcher,
                        $this->lockingProvider,
                        $this->dateTimeFormatter,
-                       $this->iniGetWrapper,
                        $this->tempManager,
                        $this->notificationManager,
                        $this->appManager,
index e7ad920760eda938c8d8c310dbfe4d68d687d0c7..e85f32dae4ac62de91af4e8a6074c1617f6896c1 100644 (file)
                                                        type: OC.SetupChecks.MESSAGE_TYPE_ERROR
                                                });
                                        }
-                                       if(data.OpcacheSetupRecommendations.length > 0) {
-                                               var listOfOPcacheRecommendations = "";
-                                               data.OpcacheSetupRecommendations.forEach(function(element){
-                                                       listOfOPcacheRecommendations += '<li>' + element + '</li>';
-                                               });
-                                               messages.push({
-                                                       msg: t('core', 'The PHP OPcache module is not properly configured. See the {linkstart}documentation ↗{linkend} for more information.')
-                                                               .replace('{linkstart}', '<a target="_blank" rel="noreferrer noopener" class="external" href="' + OC.theme.docPlaceholderUrl.replace('PLACEHOLDER', 'admin-php-opcache') + '">')
-                                                               .replace('{linkend}', '</a>') + '<ul>' + listOfOPcacheRecommendations + '</ul>',
-                                                       type: OC.SetupChecks.MESSAGE_TYPE_INFO
-                                               });
-                                       }
                                        if(!data.isSettimelimitAvailable) {
                                                messages.push({
                                                        msg: t('core', 'The PHP function "set_time_limit" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended.'),
index 5184b3e8c0d807469164d02fce1406b29f9cf1bf..bb7d118fc52c53951a30c2f768c0bca38d5ec3dc 100644 (file)
@@ -227,7 +227,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -276,7 +275,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -325,7 +323,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -374,7 +371,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: false,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -421,7 +417,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -471,7 +466,6 @@ describe('OC.SetupChecks tests', function() {
                                        reverseProxyDocs: 'https://docs.nextcloud.com/foo/bar.html',
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: false,
                                        cronErrors: [],
                                        cronInfo: {
@@ -519,7 +513,6 @@ describe('OC.SetupChecks tests', function() {
                                        reverseProxyDocs: 'https://docs.nextcloud.com/foo/bar.html',
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -598,7 +591,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -639,53 +631,6 @@ describe('OC.SetupChecks tests', function() {
                        });
                });
 
-               it('should return an info if server has no proper opcache', function(done) {
-                       var async = OC.SetupChecks.checkSetup();
-
-                       suite.server.requests[0].respond(
-                               200,
-                               {
-                                       'Content-Type': 'application/json'
-                               },
-                               JSON.stringify({
-                                       suggestedOverwriteCliURL: '',
-                                       isFairUseOfFreePushService: true,
-                                       isCorrectMemcachedPHPModuleInstalled: true,
-                                       hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: ['recommendation1', 'recommendation2'],
-                                       isSettimelimitAvailable: true,
-                                       cronErrors: [],
-                                       cronInfo: {
-                                               diffInSeconds: 0
-                                       },
-                                       appDirsWithDifferentOwner: [],
-                                       isImagickEnabled: true,
-                                       areWebauthnExtensionsEnabled: true,
-                                       isMysqlUsedWithoutUTF8MB4: false,
-                                       isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed: true,
-                                       reverseProxyGeneratedURL: 'https://server',
-                                       temporaryDirectoryWritable: true,
-                                       generic: {
-                                               network: {
-                                                       "Internet connectivity": {
-                                                               severity: "success",
-                                                               description: null,
-                                                               linkToDoc: null
-                                                       }
-                                               },
-                                       },
-                               })
-                       );
-
-                       async.done(function( data, s, x ){
-                               expect(data).toEqual([{
-                                               msg: 'The PHP OPcache module is not properly configured. See the <a target="_blank" rel="noreferrer noopener" class="external" href="https://docs.example.org/admin-php-opcache">documentation ↗</a> for more information.<ul><li>recommendation1</li><li>recommendation2</li></ul>',
-                                               type: OC.SetupChecks.MESSAGE_TYPE_INFO
-                                       }]);
-                               done();
-                       });
-               });
-
                it('should return an error if the php version is no longer supported', function(done) {
                        var async = OC.SetupChecks.checkSetup();
 
@@ -699,7 +644,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -750,7 +694,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -798,7 +741,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -843,7 +785,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -891,7 +832,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -939,7 +879,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -986,7 +925,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {
@@ -1040,7 +978,6 @@ describe('OC.SetupChecks tests', function() {
                                        isFairUseOfFreePushService: true,
                                        isCorrectMemcachedPHPModuleInstalled: true,
                                        hasPassedCodeIntegrityCheck: true,
-                                       OpcacheSetupRecommendations: [],
                                        isSettimelimitAvailable: true,
                                        cronErrors: [],
                                        cronInfo: {