diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2025-03-17 21:12:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-17 21:12:11 +0100 |
commit | 1b757f8cff6de30ab3826c464885f82d155d469b (patch) | |
tree | 28e401051c8a011ae2a729355213a49ae5f1f885 | |
parent | 9cb334c6565e4613ded13039eb84cb663e3173db (diff) | |
parent | 469e80cd32774c2139afd5c25dc19802169aa99d (diff) | |
download | nextcloud-server-1b757f8cff6de30ab3826c464885f82d155d469b.tar.gz nextcloud-server-1b757f8cff6de30ab3826c464885f82d155d469b.zip |
Merge pull request #51369 from nextcloud/backport/51361/stable29
[stable29] fix(base.php): Correct order for booting \OC\Server
-rw-r--r-- | lib/base.php | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/lib/base.php b/lib/base.php index 2301c6922c0..cadf2d75cf3 100644 --- a/lib/base.php +++ b/lib/base.php @@ -509,6 +509,27 @@ class OC { * Try to set some values to the required Nextcloud default */ public static function setRequiredIniValues(): void { + // Don't display errors and log them + @ini_set('display_errors', '0'); + @ini_set('log_errors', '1'); + + // Try to configure php to enable big file uploads. + // This doesn't work always depending on the webserver and php configuration. + // Let's try to overwrite some defaults if they are smaller than 1 hour + + if (intval(@ini_get('max_execution_time') ?: 0) < 3600) { + @ini_set('max_execution_time', strval(3600)); + } + + if (intval(@ini_get('max_input_time') ?: 0) < 3600) { + @ini_set('max_input_time', strval(3600)); + } + + // Try to set the maximum execution time to the largest time limit we have + if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { + @set_time_limit(max(intval(@ini_get('max_execution_time')), intval(@ini_get('max_input_time')))); + } + @ini_set('default_charset', 'UTF-8'); @ini_set('gd.jpeg_ignore_warning', '1'); } @@ -607,11 +628,21 @@ class OC { } public static function init(): void { + // First handle PHP configuration and copy auth headers to the expected + // $_SERVER variable before doing anything Server object related + self::setRequiredIniValues(); + self::handleAuthHeaders(); + // prevent any XML processing from loading external entities libxml_set_external_entity_loader(static function () { return null; }); + // Set default timezone before the Server object is booted + if (!date_default_timezone_set('UTC')) { + throw new \RuntimeException('Could not set timezone to UTC'); + } + // calculate the root directories OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4)); @@ -664,34 +695,6 @@ class OC { error_reporting(E_ALL); } - // Don't display errors and log them - @ini_set('display_errors', '0'); - @ini_set('log_errors', '1'); - - if (!date_default_timezone_set('UTC')) { - throw new \RuntimeException('Could not set timezone to UTC'); - } - - - //try to configure php to enable big file uploads. - //this doesn´t work always depending on the webserver and php configuration. - //Let´s try to overwrite some defaults if they are smaller than 1 hour - - if (intval(@ini_get('max_execution_time') ?: 0) < 3600) { - @ini_set('max_execution_time', strval(3600)); - } - - if (intval(@ini_get('max_input_time') ?: 0) < 3600) { - @ini_set('max_input_time', strval(3600)); - } - - //try to set the maximum execution time to the largest time limit we have - if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { - @set_time_limit(max(intval(@ini_get('max_execution_time')), intval(@ini_get('max_input_time')))); - } - - self::setRequiredIniValues(); - self::handleAuthHeaders(); $systemConfig = Server::get(\OC\SystemConfig::class); self::registerAutoloaderCache($systemConfig); |