[ '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 inkompatibel. PHP %s – %s wird benötigt.', 'en' => 'PHP version %s is incompatible. PHP %s – %s is required.', ], 'php_x64_success' => [ 'de' => '64-Bit-Unterstützung', 'en' => '64-bit Support', ], 'php_x64_failure' => [ 'de' => '64-Bit-Unterstützung fehlt', 'en' => '64-bit support missing', ], '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. 128 MiB oder mehr wird benötigt.', 'en' => 'Memory limit %s is too low. It needs to be set to 128 MiB 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.30+ oder MariaDB 10.5.15+ mit InnoDB-Unterstützung vorhanden ist.', 'en' => 'Please make sure that MySQL 8.0.30+ or MariaDB 10.5.15+, with InnoDB support is available.', ], 'tls_failure' => [ 'de' => 'Die Seite wird nicht über HTTPS aufgerufen. Wichtige Funktionen stehen dadurch nicht zur Verfügung, die für die korrekte Funktionsweise der Software erforderlich sind.', 'en' => 'The page is not accessed via HTTPS. Important features that are required for the proper operation of the software are therefore not 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 $phpVersionLowerBound, $phpVersionUpperBound; $comparePhpVersion = \preg_replace('/^(\d+\.\d+\.\d+).*$/', '\\1', \PHP_VERSION); return \version_compare($comparePhpVersion, $phpVersionLowerBound, '>=') && \version_compare($comparePhpVersion, \str_replace('x', '999', $phpVersionUpperBound), '<='); } function getMemoryLimit() { $memoryLimit = \ini_get('memory_limit'); // no limit if ($memoryLimit == "-1") { return -1; } elseif (\function_exists('ini_parse_quantity')) { return \ini_parse_quantity($memoryLimit); } else { // completely numeric, PHP assumes byte if (\is_numeric($memoryLimit)) { return $memoryLimit; } // PHP supports 'K', 'M' and 'G' shorthand notation if (\preg_match('~^(\d+)\s*([KMG])$~i', $memoryLimit, $matches)) { switch (\strtoupper($matches[2])) { case 'K': return $matches[1] * 1024; case 'M': return $matches[1] * 1024 * 1024; case 'G': return $matches[1] * 1024 * 1024 * 1024; } } } return 0; } function checkMemoryLimit() { $memoryLimit = getMemoryLimit(); return $memoryLimit == -1 || $memoryLimit >= 128 * 1024 * 1024; } function checkX64() { return \PHP_INT_SIZE == 8; } function formatFilesizeBinary($byte) { $symbol = 'Byte'; if ($byte >= 1024) { $byte /= 1024; $symbol = 'KiB'; } if ($byte >= 1024) { $byte /= 1024; $symbol = 'MiB'; } if ($byte >= 1024) { $byte /= 1024; $symbol = 'GiB'; } if ($byte >= 1024) { $byte /= 1024; $symbol = 'TiB'; } return \floor($byte) . ' ' . $symbol; } function checkResult() { global $requiredExtensions; if (!checkPHPVersion() || !checkX64() || !checkMemoryLimit() || !checkOpcache() || !checkTls()) { return false; } foreach ($requiredExtensions as $extension) { if (\is_array($extension)) { if (\array_filter($extension, '\extension_loaded') === []) { return false; } } elseif (!\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; } function checkTls() { // @see \wcf\system\request\RouteHandler::secureConnection() if ( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443 || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') ) { return true; } // @see \wcf\system\request\RouteHandler::secureContext() $host = $_SERVER['HTTP_HOST']; if ($host === '127.0.0.1' || $host === 'localhost' || \str_ends_with($host, '.localhost')) { return true; } return false; } ?> WoltLab Suite System Requirements Test
WoltLab Suite

WoltLab Suite System Requirements Test