Skip to content
Merged
Changes from 1 commit
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
Next Next commit
Respect user settings in php.ini if they are big enough
In the admin guide:
* https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html

it is mentioned that you can tweek:
* max_input_time
* max_execution_time

in order to enable larger file uploads. However, the current codebase
will hard code these values to one hour, no matter what the user sets in
php.ini.

This patch will allow the user to set these settings in php.ini and they
will be respected, if and only if, they are set to something bigger than
3600 seconds.

Signed-off-by: Micke Nordin <[email protected]>
  • Loading branch information
mickenordin authored and backportbot-nextcloud[bot] committed Aug 22, 2022
commit ab7a5de7937d375cc869af9c1648b57bf35fa8f7
28 changes: 22 additions & 6 deletions lib/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -623,16 +623,32 @@ public static function init() {
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 web server and php configuration.
//Let´s try to overwrite some defaults anyway
//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
// One hour is 3600 seconds
$time_limit = 3600;

$max_execution_time_from_ini = @ini_get('max_execution_time');
$biggest_max_execution_time = $time_limit;
if (isset($max_execution_time_from_ini)) {
$biggest_max_execution_time = max($time_limit, intval($max_execution_time_from_ini));
}
@ini_set('max_execution_time', strval($biggest_max_execution_time));

$max_input_time_from_ini = @ini_get('max_input_time');
$biggest_max_input_time = $time_limit;
if (isset($max_input_time_from_ini)) {
$biggest_max_input_time = max($time_limit, intval($max_input_time_from_ini));
}
@ini_set('max_input_time', strval($biggest_max_input_time));

//try to set the maximum execution time to 60min
//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(3600);
$biggest_time_limit = max($time_limit, $biggest_max_execution_time, $biggest_max_input_time);
@set_time_limit($biggest_time_limit);
}
@ini_set('max_execution_time', '3600');
@ini_set('max_input_time', '3600');

self::setRequiredIniValues();
self::handleAuthHeaders();
Expand Down