Merge pull request #3802 from Ko-/master

Check that set_time_limit is not disabled before calling it
This commit is contained in:
Roeland Jago Douma 2017-03-16 12:27:26 +01:00 committed by GitHub
commit 57c1be8633
10 changed files with 48 additions and 8 deletions

View File

@ -24,7 +24,9 @@
*/
// no php execution timeout for webdav
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems

View File

@ -20,7 +20,9 @@
*
*/
// no php execution timeout for webdav
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems

View File

@ -48,7 +48,9 @@ try {
require_once __DIR__ . '/lib/base.php';
// set to run indefinitely if needed
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
if (!OC::$CLI) {
echo "This script can be run from the command line only" . PHP_EOL;

View File

@ -29,7 +29,10 @@
*/
use Symfony\Component\EventDispatcher\GenericEvent;
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
require_once '../../lib/base.php';
$l = \OC::$server->getL10N('core');

View File

@ -160,6 +160,14 @@
type: OC.SetupChecks.MESSAGE_TYPE_INFO
});
}
if(!data.isSettimelimitAvailable) {
messages.push({
msg: t(
'core',
'The PHP function "set_time_limit" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function.'),
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
});
}
} else {
messages.push({
msg: t('core', 'Error occurred while checking server setup'),

View File

@ -84,7 +84,9 @@ try {
if (OC::$CLI) {
// set to run indefinitely if needed
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
// the cron job must be executed with the right user
if (!function_exists('posix_getuid')) {

View File

@ -616,7 +616,9 @@ class OC {
//Let´s try to overwrite some defaults anyway
//try to set the maximum execution time to 60min
@set_time_limit(3600);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(3600);
}
@ini_set('max_execution_time', 3600);
@ini_set('max_input_time', 3600);

View File

@ -147,7 +147,9 @@ class OC_Files {
$streamer->sendHeaders($name);
$executionTime = intval(OC::$server->getIniWrapper()->getNumeric('max_execution_time'));
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
ignore_user_abort(true);
if ($getType === self::ZIP_FILES) {
foreach ($files as $file) {

View File

@ -285,6 +285,20 @@ class CheckSetupController extends Controller {
return !(!extension_loaded('memcached') && extension_loaded('memcache'));
}
/**
* Checks if set_time_limit is not disabled.
*
* @return bool
*/
private function isSettimelimitAvailable() {
if (function_exists('set_time_limit')
&& strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
return true;
}
return false;
}
/**
* @return RedirectResponse
*/
@ -411,6 +425,7 @@ Raw output
'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'),
'isOpcacheProperlySetup' => $this->isOpcacheProperlySetup(),
'phpOpcacheDocumentation' => $this->urlGenerator->linkToDocs('admin-php-opcache'),
'isSettimelimitAvailable' => $this->isSettimelimitAvailable(),
]
);
}

View File

@ -105,7 +105,9 @@ class EncryptionController extends Controller {
*/
public function startMigration() {
// allow as long execution on the web server as possible
set_time_limit(0);
if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit(0);
}
try {