[admin] check for correct PHP memcached module
This commit is contained in:
parent
3ff60cc2e3
commit
b519965408
|
@ -98,6 +98,12 @@
|
|||
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
|
||||
});
|
||||
}
|
||||
if(!data.isCorrectMemcachedPHPModuleInstalled) {
|
||||
messages.push({
|
||||
msg: t('core', 'Memcached is configured as distributed cache, but the wrong PHP module "memcache" is installed. \\OC\\Memcache\\Memcached only supports "memcached" and not "memcache". See the <a href="{wikiLink}">memcached wiki about both modules</a>.', {wikiLink: 'https://code.google.com/p/memcached/wiki/PHPClientComparison'}),
|
||||
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
|
||||
});
|
||||
}
|
||||
} else {
|
||||
messages.push({
|
||||
msg: t('core', 'Error occurred while checking server setup'),
|
||||
|
|
|
@ -73,7 +73,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
isUrandomAvailable: true,
|
||||
serverHasInternetConnection: false,
|
||||
memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance',
|
||||
forwardedForHeadersWorking: true
|
||||
forwardedForHeadersWorking: true,
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -106,7 +107,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
serverHasInternetConnection: false,
|
||||
dataDirectoryProtected: false,
|
||||
memcacheDocs: 'https://doc.owncloud.org/server/go.php?to=admin-performance',
|
||||
forwardedForHeadersWorking: true
|
||||
forwardedForHeadersWorking: true,
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -141,7 +143,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
serverHasInternetConnection: false,
|
||||
dataDirectoryProtected: false,
|
||||
isMemcacheConfigured: true,
|
||||
forwardedForHeadersWorking: true
|
||||
forwardedForHeadersWorking: true,
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -173,7 +176,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
serverHasInternetConnection: true,
|
||||
dataDirectoryProtected: true,
|
||||
isMemcacheConfigured: true,
|
||||
forwardedForHeadersWorking: true
|
||||
forwardedForHeadersWorking: true,
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -186,6 +190,34 @@ describe('OC.SetupChecks tests', function() {
|
|||
});
|
||||
});
|
||||
|
||||
it('should return an error if the wrong memcache PHP module is installed', 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,
|
||||
dataDirectoryProtected: true,
|
||||
isMemcacheConfigured: true,
|
||||
forwardedForHeadersWorking: true,
|
||||
isCorrectMemcachedPHPModuleInstalled: false,
|
||||
})
|
||||
);
|
||||
|
||||
async.done(function( data, s, x ){
|
||||
expect(data).toEqual([{
|
||||
msg: 'Memcached is configured as distributed cache, but the wrong PHP module "memcache" is installed. \\OC\\Memcache\\Memcached only supports "memcached" and not "memcache". See the <a href="https://code.google.com/p/memcached/wiki/PHPClientComparison">memcached wiki about both modules</a>.',
|
||||
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
|
||||
}]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should return an error if the forwarded for headers are not working', function(done) {
|
||||
var async = OC.SetupChecks.checkSetup();
|
||||
|
||||
|
@ -200,7 +232,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
dataDirectoryProtected: true,
|
||||
isMemcacheConfigured: true,
|
||||
forwardedForHeadersWorking: false,
|
||||
reverseProxyDocs: 'https://docs.owncloud.org/foo/bar.html'
|
||||
reverseProxyDocs: 'https://docs.owncloud.org/foo/bar.html',
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -248,7 +281,8 @@ describe('OC.SetupChecks tests', function() {
|
|||
dataDirectoryProtected: true,
|
||||
isMemcacheConfigured: true,
|
||||
forwardedForHeadersWorking: true,
|
||||
phpSupported: {eol: true, version: '5.4.0'}
|
||||
phpSupported: {eol: true, version: '5.4.0'},
|
||||
isCorrectMemcachedPHPModuleInstalled: true,
|
||||
})
|
||||
);
|
||||
|
||||
|
|
|
@ -210,6 +210,23 @@ class CheckSetupController extends Controller {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the correct memcache module for PHP is installed. Only
|
||||
* fails if memcached is configured and the working module is not installed.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function isCorrectMemcachedPHPModuleInstalled() {
|
||||
if ($this->config->getSystemValue('memcache.distributed', null) !== '\OC\Memcache\Memcached') {
|
||||
return true;
|
||||
}
|
||||
|
||||
// there are two different memcached modules for PHP
|
||||
// we only support memcached and not memcache
|
||||
// https://code.google.com/p/memcached/wiki/PHPClientComparison
|
||||
return !extension_loaded('memcached') && extension_loaded('memcache');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DataResponse
|
||||
*/
|
||||
|
@ -226,6 +243,7 @@ class CheckSetupController extends Controller {
|
|||
'phpSupported' => $this->isPhpSupported(),
|
||||
'forwardedForHeadersWorking' => $this->forwardedForHeadersWorking(),
|
||||
'reverseProxyDocs' => $this->urlGenerator->linkToDocs('admin-reverse-proxy'),
|
||||
'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled()
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -346,6 +346,7 @@ class CheckSetupControllerTest extends TestCase {
|
|||
],
|
||||
'forwardedForHeadersWorking' => true,
|
||||
'reverseProxyDocs' => 'reverse-proxy-doc-link',
|
||||
'isCorrectMemcachedPHPModuleInstalled' => true,
|
||||
]
|
||||
);
|
||||
$this->assertEquals($expected, $this->checkSetupController->check());
|
||||
|
|
Loading…
Reference in New Issue