[
'de' => 'PHP',
'en' => 'PHP Requirements'
],
'php_version_success' => [
'de' => 'PHP-Version %s',
'en' => 'PHP version %s',
],
'php_version_failure' => [
'de' => 'Gefundene PHP-Version %s ist unzureichend. PHP %s oder höher wird benötigt.',
'en' => 'PHP version %s is insufficient. PHP %s or above is required.',
],
'php_extension_success' => [
'de' => 'Erweiterung %s vorhanden',
'en' => '%s extension loaded',
],
'php_extension_failure' => [
'de' => 'Erweiterung %s fehlt',
'en' => '%s extension missing',
],
'php_extension_gd_or_imagick_failure' => [
'de' => 'Erweiterung für Bildverarbeitung (GD oder Imagick) fehlt',
'en' => 'Extension for image processing (GD or Imagick) missing',
],
'php_extension_gd_or_imagick_webp_failure' => [
'de' => 'Unterstützung für WebP-Grafiken in %s fehlt',
'en' => 'Support for WebP images in %s missing',
],
'php_memory_limit_success' => [
'de' => 'Arbeitsspeicher-Limit %s',
'en' => '%s memory limit',
],
'php_memory_limit_failure' => [
'de' => 'Arbeitsspeicher-Limit %s ist nicht ausreichend. 128M oder mehr wird benötigt.',
'en' => 'Memory limit %s is too low. It needs to be set to 128M or more.',
],
'php_opcache_failure' => [
'de' => 'OPcache ist aktiviert aber die erforderlichen Verwaltungsfunktionen (opcache_reset, opcache_invalidate) sind deaktiviert.',
'en' => 'OPcache is enabled but the required management functions (opcache_reset, opcache_invalidate) are disabled.',
],
'mysql_requirements' => [
'de' => 'MySQL',
'en' => 'MySQL Requirements'
],
'mysql_version' => [
'de' => 'Bitte stellen Sie sicher, dass MySQL 8.0.29+ oder MariaDB 10.5.12+ mit InnoDB-Unterstützung vorhanden ist.',
'en' => 'Please make sure that MySQL 8.0.29+ or MariaDB 10.5.12+, with InnoDB support is available.'
],
'result' => [
'de' => 'Ergebnis',
'en' => 'Summary'
],
'result_success' => [
'de' => 'Alle Systemvoraussetzungen sind erfüllt. Sie können die Installation von WoltLab Suite beginnen.',
'en' => 'Your system fulfills all of WoltLab Suite\'s system requirements. You are ready to install WoltLab Suite!'
],
'result_failure' => [
'de' => 'Die Systemvoraussetzungen sind nicht erfüllt. Bitte beachten Sie die oben genannten Informationen. Wenden Sie sich ggf. an Ihren Webhoster oder Ihren Serveradministrator.',
'en' => 'The system requirements are not met. Please note the above information and contact your web host or server administrator if necessary.'
],
'button_start_installation' => [
'de' => 'Installation starten',
'en' => 'Start Installation'
]
];
function getPhrase($phrase, array $values = []) {
global $language, $phrases;
if (!isset($phrases[$phrase]) || !isset($phrases[$phrase][$language])) {
return "[unknown:{$phrase}]";
}
return vsprintf($phrases[$phrase][$language], $values);
}
function checkPHPVersion() {
global $requiredPHPVersion;
$comparePhpVersion = preg_replace('/^(\d+\.\d+\.\d+).*$/', '\\1', phpversion());
return version_compare($comparePhpVersion, $requiredPHPVersion) >= 0;
}
function checkMemoryLimit() {
$memoryLimit = ini_get('memory_limit');
// no limit
if ($memoryLimit == -1) {
return true;
}
// completely numeric, PHP assumes byte
if (is_numeric($memoryLimit)) {
$memoryLimit = $memoryLimit / 1024 / 1024;
return ($memoryLimit >= 128);
}
// PHP supports 'K', 'M' and 'G' shorthand notation
if (preg_match('~^(\d+)([KMG])$~', $memoryLimit, $matches)) {
switch ($matches[2]) {
case 'K':
$memoryLimit = $matches[1] * 1024;
return ($memoryLimit >= 128);
break;
case 'M':
return ($matches[1] >= 128);
break;
case 'G':
return ($matches[1] >= 1);
break;
}
}
return false;
}
function checkResult() {
global $requiredExtensions;
if (!checkPHPVersion() || !checkMemoryLimit() || !checkOpcache()) return false;
foreach ($requiredExtensions as $extension) {
if (!extension_loaded($extension)) return false;
}
$hasSufficientImageLibrary = false;
if (extension_loaded('imagick') && \in_array('WEBP', \Imagick::queryFormats())) {
$hasSufficientImageLibrary = true;
}
if (extension_loaded('gd') && !empty(\gd_info()['WebP Support'])) {
$hasSufficientImageLibrary = true;
}
if (!$hasSufficientImageLibrary) {
return false;
}
return true;
}
function checkInstallFile() {
return @file_exists('install.php');
}
function checkOpcache() {
if (extension_loaded('Zend Opcache') && @ini_get('opcache.enable')) {
if (!function_exists('\opcache_reset') || !function_exists('\opcache_invalidate')) {
return false;
}
}
return true;
}
?>
WoltLab Suite System Requirements Test
=getPhrase('php_requirements')?>
- =getPhrase('php_version_success', [phpversion()])?>
- =getPhrase('php_version_failure', [phpversion(), $requiredPHPVersion])?>
- =getPhrase('php_extension_success', [$extension])?>
- =getPhrase('php_extension_failure', [$extension])?>
- =getPhrase('php_extension_success', ['Imagick'])?>
- =getPhrase('php_extension_success', ['GD'])?>
- =getPhrase('php_extension_gd_or_imagick_webp_failure', ['GD'])?>
- =getPhrase('php_extension_gd_or_imagick_failure')?>
- =getPhrase('php_memory_limit_success', [ini_get('memory_limit')])?>
- =getPhrase('php_memory_limit_failure', [ini_get('memory_limit')])?>
- =getPhrase('php_opcache_failure')?>
=getPhrase('mysql_requirements')?>
- =getPhrase('mysql_version')?>
=getPhrase('result')?>
=getPhrase('result_success')?>
=getPhrase('result_failure')?>
=getPhrase('button_start_installation')?>