2 // @codingStandardsIgnoreFile
4 if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && preg_match('~^de-[A-Z]+,de~', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
8 if (isset($_GET['language']) && in_array($_GET['language'], ['de', 'en'])) {
9 $language = $_GET['language'];
15 <meta charset
="utf-8">
16 <meta name
="viewport" content
="width=device-width, initial-scale=1, shrink-to-fit=no">
18 <title
>WSC System Requirements Test
</title
>
22 background
-color
: #2D2D2D;
23 box
-sizing
: border
-box
;
25 font
-family
: -apple
-system
,BlinkMacSystemFont
,"Segoe UI",Roboto
,"Helvetica Neue",Arial
,sans
-serif
,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
47 background
-color
: #3D3D3D;
53 align
-items
: flex
-end
;
55 justify
-content
: space
-between
;
65 list-style
-type
: none
;
70 .language
-switcher
> li
{
74 .language
-switcher
> li + li
{
75 border
-left
: 1px solid
#444444;
87 text
-decoration
: none
;
90 .language
:not(.active
) {
102 text
-decoration
: none
;
111 h2
:not(:first
-child
),
112 h3
:not(:first
-child
) {
124 ul
.system
-requirements
{
128 ul
.system
-requirements li
{
133 ul
.system
-requirements li
::before
{
134 font
-family
: Georgia
, "Times New Roman", serif
;
165 font
-family
: Georgia
, "Times New Roman", serif
;
170 background
-color
: #008563;
177 background
-color
: #de2f1b;
184 background
-color
: #375a7f;
189 font
-family
: inherit
;
192 text
-decoration
: none
;
193 vertical
-align
: middle
;
194 text
-transform
: uppercase
;
198 background
-color
: #2b4764;
203 <div
class="layout-boundary">
205 <img src
="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjIAAABQCAMAAAA0sW8TAAACxFBMVEUAAAD////////////////////////////////////////////////////////////a3ADk0RJzuQDp0hgAEiPj3wAwkHoAiL3YWQDVVQByuADaXABxuADWVwDa3AC2xwjs2xDUVADc3QD5ogPQ2AD3wBFzuQDZWgAEm8hwuAB4uQD65wAAg7nXVwAAcKhwuACAuCcJkr0LBADUVAAAir+4yQgwpqj4zFwAerEHChAAAAD/vCb/y1fj3wAAEB/5jACwwwX/uBwACRKBNgHDwhQAj8PueAD65wDiuxT+swcHiLP8qQPUVADfbQUAS4jL1wDe3QC/ygoASYKYxgAARIEAS4gAJ0395wBqKgAAAAD///9wuADUVAAAebDi3wDm4ADr4gDu4wAAfbQAdazg3gB8ugD35gDx4wChvgDK1gD05AClvwB1uQDc3QAAir7o4QDAwhPF1AHP2ADdYACVvQDgZQDjagDZWwDYxSXexinjxy7TxSLPxB7W2wAAhbsAWZQAgreJuwCpwAKavgAAYZvLxBvA0wORvADrdgABcKgAaqOEuwAAjsMAcqkAZ6AAXZiMvQDvewEAk8cAbaXpxzKBugD1hADmbgDXVwAAVY8ATInHwxiuwAX75wCdvwCxwQgAR4TEwxYAUY26wg7T2gD/nwAAZJ7wyDe3wQ3J0ge60ATpcQD/mQL7yUC0wQoBBAf/lAD5igEAQn/yfwC9whD/pQD9jwD/rQEAMF0AHDi1zQSvxwMAN2v/y1P/0WUAJksBP3abtwJ+oAD9uBeKqgH/2HmjyACTsQKWxQD/vzBDteYsk8URocR/vnxyscgeh7tYl7A+noePn3jGvFN3aU+nwknMxThKHgDM5NUVf7Glw6xRt5nm1pIpb5BSXlpfr1b6sVJyz/Hu4sna07LPx4AdXH6xrHaoczuqSQOD2vl3tlrilkluJ0CCAAAAWnRSTlMAv0CA7xBgIJ/fMM+PUHCv/hC8MP5AEC4Q6OcnfUiknIODdWVbIJlwXlgq7+uoXkD998/HnHj89sx2ENDPuqenYFAk+urKyr+6pICAYPfv39fPv7+QaN/fn1CakgmdAAAR5UlEQVR42uzYQQqDMBBG4TlCRdwWKbrKGVx7hO5iBFFw44m8a9UQomXU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" style
="height: 40px; width: 281px" alt
="WoltLab Suite">
206 <ul
class="language-switcher">
207 <li
><a href
="./test.php?language=de" class="language<?=($language === 'de' ? ' active' : '')?>">Deutsch
</a
></li
>
208 <li
><a href
="./test.php?language=en" class="language<?=($language === 'en' ? ' active' : '')?>">English
</a
></li
>
214 const WSC_SRT_VERSION
= '5.2.0';
215 $requiredExtensions = ['ctype', 'dom', 'json', 'hash', 'libxml', 'mbstring', 'pcre', 'pdo', 'pdo_mysql', 'zlib'];
216 $requiredPHPVersion = '7.0.22';
218 'php_requirements' => [
220 'en' => 'PHP Requirements'
222 'php_version_success' => [
223 'de' => 'PHP-Version %s',
224 'en' => 'PHP version %s',
226 'php_version_failure' => [
227 'de' => 'Gefundene PHP-Version %s ist unzureichend. PHP %s oder höher wird benötigt.',
228 'en' => 'PHP version %s is insufficient. PHP %s or above is required.',
230 'php_extension_success' => [
231 'de' => 'Erweiterung %s vorhanden',
232 'en' => '%s extension loaded',
234 'php_extension_failure' => [
235 'de' => 'Erweiterung %s fehlt',
236 'en' => '%s extension missing',
238 'php_extension_gd_or_imagick_failure' => [
239 'de' => 'Erweiterung für Bildverarbeitung (GD oder Imagick) fehlt',
240 'en' => 'Extension for image processing (GD or Imagick) missing',
242 'php_sha256_success' => [
243 'de' => 'Unterstützung für SHA-256-Hashfunktion vorhanden',
244 'en' => 'Support for SHA-256 algorithm available',
246 'php_sha256_failure' => [
247 'de' => 'Unterstützung für SHA-256-Hashfunktion fehlt',
248 'en' => 'Support for SHA-256 algorithm missing',
250 'php_memory_limit_success' => [
251 'de' => 'Arbeitsspeicher-Limit %s',
252 'en' => '%s memory limit',
254 'php_memory_limit_failure' => [
255 'de' => 'Arbeitsspeicher-Limit %s ist nicht ausreichend. 128M oder mehr wird benötigt.',
256 'en' => 'Memory limit %s is too low. It needs to be set to 128M or more.',
258 'php_opcache_failure' => [
259 'de' => 'OPcache ist aktiviert aber die erforderlichen Verwaltungsfunktionen (opcache_reset, opcache_invalidate) sind deaktiviert.',
260 'en' => 'OPcache is enabled but the required management functions (opcache_reset, opcache_invalidate) are disabled.',
262 'mysql_requirements' => [
264 'en' => 'MySQL Requirements'
267 'de' => 'Bitte stellen Sie sicher, dass MySQL 5.5.35+/MySQL 8.0.14+ oder MariaDB 10.0.22+ mit InnoDB-Unterstützung vorhanden ist.',
268 'en' => 'Please make sure that MySQL 5.5.35+/MySQL 8.0.14+ or MariaDB 10.0.22+, with InnoDB support is available.'
274 'result_success' => [
275 'de' => 'Alle Systemvoraussetzungen sind erfüllt. Sie können die Installation von WoltLab Suite beginnen.',
276 'en' => 'Your system fulfills all of WoltLab Suite\'s system requirements. You are ready to install WoltLab Suite!'
278 'result_failure' => [
279 'de' => 'Die Systemvoraussetzungen sind nicht erfüllt. Bitte beachten Sie die oben genannten Informationen. Wenden Sie sich ggf. an Ihren Webhoster oder Ihren Serveradministrator.',
280 'en' => 'The system requirements are not met. Please note the above information and contact your web host or server administrator if necessary.'
282 'button_start_installation' => [
283 'de' => 'Installation starten',
284 'en' => 'Start Installation'
287 function getPhrase($phrase, array $values = []) {
288 global $language, $phrases;
290 if (!isset($phrases[$phrase]) ||
!isset($phrases[$phrase][$language])) {
291 return "[unknown:{$phrase}]";
294 return vsprintf($phrases[$phrase][$language], $values);
296 function checkPHPVersion() {
297 global $requiredPHPVersion;
299 $comparePhpVersion = preg_replace('/^(\d+\.\d+\.\d+).*$/', '\\1', phpversion());
300 return version_compare($comparePhpVersion, $requiredPHPVersion) >= 0;
302 function checkMemoryLimit() {
303 $memoryLimit = ini_get('memory_limit');
306 if ($memoryLimit == -1) {
310 // completely numeric, PHP assumes byte
311 if (is_numeric($memoryLimit)) {
312 $memoryLimit = $memoryLimit / 1024 / 1024;
313 return ($memoryLimit >= 128);
316 // PHP supports 'K', 'M' and 'G' shorthand notation
317 if (preg_match('~^(\d+)([KMG])$~', $memoryLimit, $matches)) {
318 switch ($matches[2]) {
320 $memoryLimit = $matches[1] * 1024;
321 return ($memoryLimit >= 128);
325 return ($matches[1] >= 128);
329 return ($matches[1] >= 1);
336 function checkHashAlgorithms() {
337 return extension_loaded('hash') && in_array('sha256', hash_algos());
339 function checkResult() {
340 global $requiredExtensions;
342 if (!checkPHPVersion() ||
!checkHashAlgorithms() ||
!checkMemoryLimit() ||
!checkOpcache()) return false;
344 foreach ($requiredExtensions as $extension) {
345 if (!extension_loaded($extension)) return false;
348 if (!extension_loaded('gd') && !extension_loaded('imagick')) return false;
352 function checkInstallFile() {
353 return @file_exists
('install.php');
355 function checkOpcache() {
356 if (extension_loaded('Zend Opcache') && @ini_get
('opcache.enable')) {
357 if (!function_exists('\opcache_reset') ||
!function_exists('\opcache_invalidate')) {
365 <h2
>WoltLab Suite System Requirements Test
</h2
>
367 <h3
><?
=getPhrase('php_requirements')?
></h3
>
369 <ul
class="system-requirements">
370 <?php
if (checkPHPVersion()) { ?
>
371 <li
class="success"><?
=getPhrase('php_version_success', [phpversion()])?
></li
>
373 <li
class="failure"><?
=getPhrase('php_version_failure', [phpversion(), $requiredPHPVersion])?
></li
>
376 <?php
foreach ($requiredExtensions as $extension) {
377 if (extension_loaded($extension)) { ?
>
378 <li
class="success"><?
=getPhrase('php_extension_success', [$extension])?
></li
>
380 <li
class="failure"><?
=getPhrase('php_extension_failure', [$extension])?
></li
>
384 <?php
if (extension_loaded('imagick')) { ?
>
385 <li
class="success"><?
=getPhrase('php_extension_success', ['Imagick'])?
></li
>
386 <?php
} else if (extension_loaded('gd')) { ?
>
387 <li
class="success"><?
=getPhrase('php_extension_success', ['GD'])?
></li
>
389 <li
class="failure"><?
=getPhrase('php_extension_gd_or_imagick_failure')?
></li
>
392 <?php
if (checkHashAlgorithms()) { ?
>
393 <li
class="success"><?
=getPhrase('php_sha256_success')?
></li
>
395 <li
class="failure"><?
=getPhrase('php_sha256_failure')?
></li
>
398 <?php
if (checkMemoryLimit()) { ?
>
399 <li
class="success"><?
=getPhrase('php_memory_limit_success', [ini_get('memory_limit')])?
></li
>
401 <li
class="failure"><?
=getPhrase('php_memory_limit_failure', [ini_get('memory_limit')])?
></li
>
404 <?php
if (!checkOpcache()) { ?
>
405 <li
class="failure"><?
=getPhrase('php_opcache_failure')?
></li
>
409 <h3
><?
=getPhrase('mysql_requirements')?
></h3
>
411 <ul
class="system-requirements">
412 <li
class="info"><?
=getPhrase('mysql_version')?
></li
>
415 <h2
><?
=getPhrase('result')?
></h2
>
417 <?php
if (checkResult()) { ?
>
418 <p
class="success"><?
=getPhrase('result_success')?
></p
>
420 <p
class="failure"><?
=getPhrase('result_failure')?
></p
>
423 <?php
if (checkInstallFile()) { ?
>
424 <p style
="margin-top: 50px; text-align: center;"><a href
="install.php" class="button"><?
=getPhrase('button_start_installation')?
></a
></p
>
428 <a href
="https://www.woltlab.com">WoltLab Suite System Requirements Test v
<?
=WSC_SRT_VERSION?
></a
>