Show info in admin settings about PHP opcache if disabled
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
parent
41276f720b
commit
cee8853658
|
@ -148,6 +148,18 @@
|
||||||
type: OC.SetupChecks.MESSAGE_TYPE_ERROR
|
type: OC.SetupChecks.MESSAGE_TYPE_ERROR
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if(!data.isOpcacheProperlySetup) {
|
||||||
|
messages.push({
|
||||||
|
msg: t(
|
||||||
|
'core',
|
||||||
|
'The PHP Opcache is not properly configured. <a target="_blank" rel="noreferrer" href="{docLink}">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:',
|
||||||
|
{
|
||||||
|
docLink: data.phpOpcacheDocumentation,
|
||||||
|
}
|
||||||
|
) + "<pre><code>opcache.enable=On\nopcache.enable_cli=1\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.memory_consumption=128\nopcache.save_comments=1\nopcache.revalidate_freq=1</code></pre>",
|
||||||
|
type: OC.SetupChecks.MESSAGE_TYPE_INFO
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
messages.push({
|
messages.push({
|
||||||
msg: t('core', 'Error occurred while checking server setup'),
|
msg: t('core', 'Error occurred while checking server setup'),
|
||||||
|
|
|
@ -155,6 +155,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
forwardedForHeadersWorking: true,
|
forwardedForHeadersWorking: true,
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -186,6 +187,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
forwardedForHeadersWorking: true,
|
forwardedForHeadersWorking: true,
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -218,6 +220,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
forwardedForHeadersWorking: true,
|
forwardedForHeadersWorking: true,
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -248,6 +251,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
forwardedForHeadersWorking: true,
|
forwardedForHeadersWorking: true,
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -276,6 +280,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
forwardedForHeadersWorking: true,
|
forwardedForHeadersWorking: true,
|
||||||
isCorrectMemcachedPHPModuleInstalled: false,
|
isCorrectMemcachedPHPModuleInstalled: false,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -304,6 +309,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
reverseProxyDocs: 'https://docs.owncloud.org/foo/bar.html',
|
reverseProxyDocs: 'https://docs.owncloud.org/foo/bar.html',
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -353,6 +359,7 @@ describe('OC.SetupChecks tests', function() {
|
||||||
phpSupported: {eol: true, version: '5.4.0'},
|
phpSupported: {eol: true, version: '5.4.0'},
|
||||||
isCorrectMemcachedPHPModuleInstalled: true,
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
hasPassedCodeIntegrityCheck: true,
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: true,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -364,6 +371,36 @@ describe('OC.SetupChecks tests', function() {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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({
|
||||||
|
isUrandomAvailable: true,
|
||||||
|
securityDocs: 'https://docs.owncloud.org/myDocs.html',
|
||||||
|
serverHasInternetConnection: true,
|
||||||
|
isMemcacheConfigured: true,
|
||||||
|
forwardedForHeadersWorking: true,
|
||||||
|
isCorrectMemcachedPHPModuleInstalled: true,
|
||||||
|
hasPassedCodeIntegrityCheck: true,
|
||||||
|
isOpcacheProperlySetup: false,
|
||||||
|
phpOpcacheDocumentation: 'https://example.org/link/to/doc',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
async.done(function( data, s, x ){
|
||||||
|
expect(data).toEqual([{
|
||||||
|
msg: 'The PHP Opcache is not properly configured. <a target="_blank" rel="noreferrer" href="https://example.org/link/to/doc">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:' + "<pre><code>opcache.enable=On\nopcache.enable_cli=1\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.memory_consumption=128\nopcache.save_comments=1\nopcache.revalidate_freq=1</code></pre>",
|
||||||
|
type: OC.SetupChecks.MESSAGE_TYPE_INFO
|
||||||
|
}]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('checkGeneric', function() {
|
describe('checkGeneric', function() {
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
namespace OC\Settings\Controller;
|
namespace OC\Settings\Controller;
|
||||||
|
|
||||||
|
use bantu\IniGetWrapper\IniGetWrapper;
|
||||||
use GuzzleHttp\Exception\ClientException;
|
use GuzzleHttp\Exception\ClientException;
|
||||||
use OC\AppFramework\Http;
|
use OC\AppFramework\Http;
|
||||||
use OC\IntegrityCheck\Checker;
|
use OC\IntegrityCheck\Checker;
|
||||||
|
@ -354,6 +355,42 @@ Raw output
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether a PHP opcache is properly set up
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function isOpcacheProperlySetup() {
|
||||||
|
$iniWrapper = new IniGetWrapper();
|
||||||
|
|
||||||
|
$isOpcacheProperlySetUp = true;
|
||||||
|
|
||||||
|
if(!$iniWrapper->getBool('opcache.enable')) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$iniWrapper->getBool('opcache.save_comments')) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$iniWrapper->getBool('opcache.enable_cli')) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($iniWrapper->getNumeric('opcache.max_accelerated_files') < 10000) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($iniWrapper->getNumeric('opcache.memory_consumption') < 128) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($iniWrapper->getNumeric('opcache.interned_strings_buffer') < 8) {
|
||||||
|
$isOpcacheProperlySetUp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $isOpcacheProperlySetUp;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return DataResponse
|
* @return DataResponse
|
||||||
*/
|
*/
|
||||||
|
@ -372,6 +409,8 @@ Raw output
|
||||||
'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled(),
|
'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled(),
|
||||||
'hasPassedCodeIntegrityCheck' => $this->checker->hasPassedCheck(),
|
'hasPassedCodeIntegrityCheck' => $this->checker->hasPassedCheck(),
|
||||||
'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'),
|
'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'),
|
||||||
|
'isOpcacheProperlySetup' => $this->isOpcacheProperlySetup(),
|
||||||
|
'phpOpcacheDocumentation' => $this->urlGenerator->linkToDocs('admin-php-opcache'),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,6 +311,14 @@ class CheckSetupControllerTest extends TestCase {
|
||||||
->method('linkToDocs')
|
->method('linkToDocs')
|
||||||
->with('admin-reverse-proxy')
|
->with('admin-reverse-proxy')
|
||||||
->willReturn('reverse-proxy-doc-link');
|
->willReturn('reverse-proxy-doc-link');
|
||||||
|
$this->urlGenerator->expects($this->at(3))
|
||||||
|
->method('linkToDocs')
|
||||||
|
->with('admin-code-integrity')
|
||||||
|
->willReturn('http://doc.owncloud.org/server/go.php?to=admin-code-integrity');
|
||||||
|
$this->urlGenerator->expects($this->at(4))
|
||||||
|
->method('linkToDocs')
|
||||||
|
->with('admin-php-opcache')
|
||||||
|
->willReturn('http://doc.owncloud.org/server/go.php?to=admin-php-opcache');
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
|
@ -328,7 +336,9 @@ class CheckSetupControllerTest extends TestCase {
|
||||||
'reverseProxyDocs' => 'reverse-proxy-doc-link',
|
'reverseProxyDocs' => 'reverse-proxy-doc-link',
|
||||||
'isCorrectMemcachedPHPModuleInstalled' => true,
|
'isCorrectMemcachedPHPModuleInstalled' => true,
|
||||||
'hasPassedCodeIntegrityCheck' => null,
|
'hasPassedCodeIntegrityCheck' => null,
|
||||||
'codeIntegrityCheckerDocumentation' => null,
|
'codeIntegrityCheckerDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-code-integrity',
|
||||||
|
'isOpcacheProperlySetup' => false,
|
||||||
|
'phpOpcacheDocumentation' => 'http://doc.owncloud.org/server/go.php?to=admin-php-opcache',
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$this->assertEquals($expected, $this->checkSetupController->check());
|
$this->assertEquals($expected, $this->checkSetupController->check());
|
||||||
|
|
Loading…
Reference in New Issue