Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable31] fix(base.php): Correct order for booting \OC\Server #51371

Merged
merged 1 commit into from
Mar 17, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 31 additions & 28 deletions lib/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,27 @@ public static function hasSessionRelaxedExpiry(): bool {
* 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');
}
Expand Down Expand Up @@ -553,11 +574,21 @@ private static function performSameSiteCookieProtection(\OCP\IConfig $config): v
}

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));

Expand Down Expand Up @@ -615,34 +646,6 @@ public static function init(): void {
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);

Expand Down
Loading