diff --git a/.htaccess b/.htaccess index cf9af3f72d..0ec0fc0134 100644 --- a/.htaccess +++ b/.htaccess @@ -14,6 +14,7 @@ php_value memory_limit 512M php_value mbstring.func_overload 0 php_value always_populate_raw_post_data -1 php_value default_charset 'UTF-8' +php_value output_buffering false SetEnv htaccessWorking true diff --git a/.user.ini b/.user.ini index ef440b53fe..f59c362945 100644 --- a/.user.ini +++ b/.user.ini @@ -4,3 +4,4 @@ memory_limit=512M mbstring.func_overload=0 always_populate_raw_post_data=-1 default_charset='UTF-8' +output_buffering=false \ No newline at end of file diff --git a/lib/private/util.php b/lib/private/util.php index 1993a7c9a9..c4e137ea48 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -570,6 +570,7 @@ class OC_Util { // classes = class_exists // functions = function_exists // defined = defined + // ini = ini_get // If the dependency is not found the missing module name is shown to the EndUser $dependencies = array( 'classes' => array( @@ -590,9 +591,14 @@ class OC_Util { ), 'defined' => array( 'PDO::ATTR_DRIVER_NAME' => 'PDO' - ) + ), + 'ini' => [ + 'mbstring.func_overload' => 0, + 'output_buffering' => false, + ], ); $missingDependencies = array(); + $invalidIniSettings = []; $moduleHint = $l->t('Please ask your server administrator to install the module.'); foreach ($dependencies['classes'] as $class => $module) { @@ -610,6 +616,19 @@ class OC_Util { $missingDependencies[] = $module; } } + foreach($dependencies['ini'] as $setting => $expected) { + $iniWrapper = \OC::$server->getIniWrapper(); + if(is_bool($expected)) { + if($iniWrapper->getBool($setting) !== $expected) { + $invalidIniSettings[] = [$setting, $expected]; + } + } + if(is_int($expected)) { + if($iniWrapper->getNumeric($setting) !== $expected) { + $invalidIniSettings[] = [$setting, $expected]; + } + } + } foreach($missingDependencies as $missingDependency) { $errors[] = array( @@ -618,6 +637,13 @@ class OC_Util { ); $webServerRestart = true; } + foreach($invalidIniSettings as $setting) { + $errors[] = [ + 'error' => $l->t('PHP setting "%s" is not set to "%s".', [$setting[0], $setting[1]]), + 'hint' => $l->t('Adjusting this setting in php.ini will make ownCloud run again') + ]; + $webServerRestart = true; + } if (version_compare(phpversion(), '5.4.0', '<')) { $errors[] = array(