Check `mbstring.func_overload` only if the mb module is installed.

Fixes https://github.com/owncloud/core/issues/14670
This commit is contained in:
Lukas Reschke 2015-05-04 16:14:12 +02:00
parent 64393b4c03
commit 7c5558327d
1 changed files with 17 additions and 2 deletions

View File

@ -671,7 +671,6 @@ class OC_Util {
'PDO::ATTR_DRIVER_NAME' => 'PDO'
),
'ini' => [
'mbstring.func_overload' => 0,
'default_charset' => 'UTF-8',
],
);
@ -685,6 +684,7 @@ class OC_Util {
* approach to check for these values we should re-enable those
* checks.
*/
$iniWrapper = \OC::$server->getIniWrapper();
if (!self::runningOnHhvm()) {
foreach ($dependencies['classes'] as $class => $module) {
if (!class_exists($class)) {
@ -702,7 +702,6 @@ class OC_Util {
}
}
foreach ($dependencies['ini'] as $setting => $expected) {
$iniWrapper = \OC::$server->getIniWrapper();
if (is_bool($expected)) {
if ($iniWrapper->getBool($setting) !== $expected) {
$invalidIniSettings[] = [$setting, $expected];
@ -739,6 +738,22 @@ class OC_Util {
$webServerRestart = true;
}
/**
* The mbstring.func_overload check can only be performed if the mbstring
* module is installed as it will return null if the checking setting is
* not available and thus a check on the boolean value fails.
*
* TODO: Should probably be implemented in the above generic dependency
* check somehow in the long-term.
*/
if($iniWrapper->getBool('mbstring.func_overload') !== null &&
$iniWrapper->getBool('mbstring.func_overload') === true) {
$errors[] = array(
'error' => $l->t('mbstring.func_overload is set to "%s" instead to the expected value "0"', [$iniWrapper->getString('mbstring.func_overload')]),
'hint' => $l->t('To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini')
);
}
/**
* PHP 5.6 ships with a PHP setting which throws notices by default for a
* lot of endpoints. Thus we need to ensure that the value is set to -1