fix(autoloader): no apcu no side effects

apcu lead to side effects especially with app management and (soft)
inter-dependencies, and lead also to 500 server errors. While we could
add management to clear apcu cache in many cases (may stil leave edge
cases) the performance benefit is marginally as also class maps are
already cached in opcache. Hence, the simple and effective way to go is
to not use apcu for autoloading.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
pull/40351/head
Arthur Schiwon 9 months ago committed by backportbot-nextcloud[bot]
parent 2642a330b4
commit e4fbb49f38

@ -114,8 +114,6 @@ class OC {
public static string $configDir;
public static int $VERSION_MTIME = 0;
/**
* requested app
*/
@ -604,10 +602,9 @@ class OC {
self::$CLI = (php_sapi_name() == 'cli');
// Add default composer PSR-4 autoloader
// Add default composer PSR-4 autoloader, ensure apcu to be disabled
self::$composerAutoloader = require_once OC::$SERVERROOT . '/lib/composer/autoload.php';
OC::$VERSION_MTIME = filemtime(OC::$SERVERROOT . '/version.php');
self::$composerAutoloader->setApcuPrefix('composer_autoload_' . md5(OC::$SERVERROOT . '_' . OC::$VERSION_MTIME));
self::$composerAutoloader->setApcuPrefix(null);
try {
self::initPaths();

@ -326,9 +326,10 @@ class OC_Util {
return;
}
$timestamp = filemtime(OC::$SERVERROOT . '/version.php');
require OC::$SERVERROOT . '/version.php';
/** @var int $timestamp */
self::$versionCache['OC_Version_Timestamp'] = \OC::$VERSION_MTIME;
self::$versionCache['OC_Version_Timestamp'] = $timestamp;
/** @var string $OC_Version */
self::$versionCache['OC_Version'] = $OC_Version;
/** @var string $OC_VersionString */

Loading…
Cancel
Save