diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2013-12-19 03:24:37 -0800 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2013-12-19 03:24:37 -0800 |
commit | 9b18a4fd876b106135498e7b08ee754edc0135d0 (patch) | |
tree | 77bd9d4c8ce95b3a2dd5bc48e9b299041d7f0d51 /lib | |
parent | 684e331b5b6b6fd344258dab3b50dd61f134286a (diff) | |
parent | 38f4ecaeac3d98b2eb43211c78486c956147ce48 (diff) | |
download | nextcloud-server-9b18a4fd876b106135498e7b08ee754edc0135d0.tar.gz nextcloud-server-9b18a4fd876b106135498e7b08ee754edc0135d0.zip |
Merge pull request #4378 from owncloud/fixing-3417-master
Don't use xcache in case admin auth is enabled
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/memcache/xcache.php | 26 | ||||
-rwxr-xr-x | lib/private/util.php | 6 |
2 files changed, 22 insertions, 10 deletions
diff --git a/lib/private/memcache/xcache.php b/lib/private/memcache/xcache.php index 4485f905207..1337a7ad612 100644 --- a/lib/private/memcache/xcache.php +++ b/lib/private/memcache/xcache.php @@ -8,9 +8,13 @@ namespace OC\Memcache; +/** + * See http://xcache.lighttpd.net/wiki/XcacheApi for provided constants and + * functions etc. + */ class XCache extends Cache { /** - * entries in XCache gets namespaced to prevent collisions between owncloud instances and users + * entries in XCache gets namespaced to prevent collisions between ownCloud instances and users */ protected function getNameSpace() { return $this->prefix; @@ -37,7 +41,12 @@ class XCache extends Cache { } public function clear($prefix='') { - xcache_unset_by_prefix($this->getNamespace().$prefix); + if (function_exists('xcache_unset_by_prefix')) { + return xcache_unset_by_prefix($this->getNamespace().$prefix); + } else { + // Since we can not clear by prefix, we just clear the whole cache. + xcache_clear_cache(\XC_TYPE_VAR, 0); + } return true; } @@ -48,6 +57,12 @@ class XCache extends Cache { if (\OC::$CLI) { return false; } + if (!function_exists('xcache_unset_by_prefix') && ini_get('xcache.admin.enable_auth')) { + // We do not want to use XCache if we can not clear it without + // using the administration function xcache_clear_cache() + // AND administration functions are password-protected. + return false; + } $var_size = (int) ini_get('xcache.var_size'); if (!$var_size) { return false; @@ -55,10 +70,3 @@ class XCache extends Cache { return true; } } - -if(!function_exists('xcache_unset_by_prefix')) { - function xcache_unset_by_prefix($prefix) { - // Since we can't clear targetted cache, we'll clear all. :( - xcache_clear_cache(\XC_TYPE_VAR, 0); - } -} diff --git a/lib/private/util.php b/lib/private/util.php index a73564b3f68..c0e618cc863 100755 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -1085,7 +1085,11 @@ class OC_Util { } // XCache if (function_exists('xcache_clear_cache')) { - xcache_clear_cache(XC_TYPE_VAR, 0); + if (ini_get('xcache.admin.enable_auth')) { + OC_Log::write('core', 'XCache opcode cache will not be cleared because "xcache.admin.enable_auth" is enabled.', \OC_Log::WARN); + } else { + xcache_clear_cache(XC_TYPE_PHP, 0); + } } // Opcache (PHP >= 5.5) if (function_exists('opcache_reset')) { |