summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2013-05-25 11:25:43 -0400
committerMichael Gapczynski <mtgap@owncloud.com>2013-05-25 11:25:43 -0400
commit0a29d2029a719d42f347edb95bd6486c2ab842a8 (patch)
tree3936a54c91eb03bdaab0334f48ab4af3406594ef /lib
parentc62f230ddb4304faa9455e849b393693fc9b14aa (diff)
downloadnextcloud-server-0a29d2029a719d42f347edb95bd6486c2ab842a8.tar.gz
nextcloud-server-0a29d2029a719d42f347edb95bd6486c2ab842a8.zip
Clear opcode caches after writing to the config file, fixes #3372
Diffstat (limited to 'lib')
-rw-r--r--lib/config.php2
-rwxr-xr-xlib/util.php19
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/config.php b/lib/config.php
index 9b87d4ce4e5..3cbb89fb981 100644
--- a/lib/config.php
+++ b/lib/config.php
@@ -187,7 +187,7 @@ class OC_Config{
}
// Prevent others not to read the config
@chmod($filename, 0640);
-
+ OC_Util::clearOpcodeCache();
return true;
}
}
diff --git a/lib/util.php b/lib/util.php
index f30cdf6a534..a7ed0379294 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -822,5 +822,24 @@ class OC_Util {
return $theme;
}
+ /**
+ * Clear the opcode cache if one exists
+ * This is necessary for writing to the config file
+ * in case the opcode cache doesn't revalidate files
+ */
+ public static function clearOpcodeCache() {
+ // APC
+ if (function_exists('apc_clear_cache')) {
+ apc_clear_cache();
+ }
+ // Zend Opcache
+ if (function_exists('accelerator_reset')) {
+ accelerator_reset();
+ }
+ // XCache
+ if (function_exists('xcache_clear_cache')) {
+ xcache_clear_cache(XC_TYPE_VAR, 0);
+ }
+ }
}