Recommend 64-bit PHP during WCFSetup
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 23 Sep 2021 08:33:23 +0000 (10:33 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 23 Sep 2021 08:33:23 +0000 (10:33 +0200)
Resolves #4512

wcfsetup/install/files/lib/system/WCFSetup.class.php
wcfsetup/setup/lang/setup_de.xml
wcfsetup/setup/lang/setup_en.xml
wcfsetup/setup/template/stepShowSystemRequirements.tpl

index 3135a1e9032cfeabdf09cf29f24e5e21f8c0689f..e6940b546ab40242e80c6fec865fca9c3beeac2a 100644 (file)
@@ -387,6 +387,12 @@ class WCFSetup extends WCF
         $comparePhpVersion = \preg_replace('/^(\d+\.\d+\.\d+).*$/', '\\1', $system['phpVersion']['value']);
         $system['phpVersion']['result'] = (\version_compare($comparePhpVersion, '7.2.24') >= 0);
 
+        // The magic number below is 2**53, the largest integer that can be represented exactly
+        // as an 64 Bit double precision IEEE-754 floating point number.
+        // 64 Bit PHP will be able to detect the difference between 2**53 and 2**53 + 1, while
+        // 32 Bit PHP will not.
+        $system['x64']['result'] = \PHP_INT_SIZE >= 8 && (9007199254740992 !== 9007199254740992 + 1);
+
         // sql
         $system['sql']['result'] = MySQLDatabase::isSupported();
 
index 1e36745109e46c3dee1a6e80a3cc39674ded88f7..61a7ede8a70b07937ddf5d2076d016616ff5682b 100644 (file)
@@ -50,6 +50,8 @@
                <item name="wcf.global.systemRequirements.cookie.description"><![CDATA[Gesetzte Cookies müssen vom Webbrowser zurück an den Server gesendet werden.]]></item>
                <item name="wcf.global.systemRequirements.tls"><![CDATA[Verschlüsselte HTTPS-Verbindung (SSL/TLS)]]></item>
                <item name="wcf.global.systemRequirements.tls.description"><![CDATA[Die Installation wird über eine unverschlüsselte HTTP-Verbindung aufgerufen. Aus Gründen des Datenschutzes sollte der Zugriff generell über eine verschlüsselte HTTPS-Verbindung erfolgen. Unverschlüsselte Anfragen sollten auf die verschlüsselte Version umgeleitet werden. Bei der Verwendung von unverschlüsselten Verbindungen kann es zu einer Einschränkung des Funktionsumfangs kommen, da Webbrowser bestimmte Funktionen lediglich zur Verwendung mit verschlüsselten Verbindungen zulassen.]]></item>
+               <item name="wcf.global.systemRequirements.x64"><![CDATA[64-Bit-Unterstützung]]></item>
+               <item name="wcf.global.systemRequirements.x64.description"><![CDATA[Eine PHP-Version mit Unterstützung für 64-Bit-Ganzzahlen wird benötigt, um Zahlwerte größer als etwa 2,1 Milliarden korrekt zu verarbeiten. Ohne 64-Bit-Unterstützung können bestimmte Funktionen eingeschränkt sein oder fehlerhafte Werte liefern. Darüber hinaus ist die Verarbeitungsgeschwindigkeit von Anfragen in 64-Bit-PHP gegenüber 32-Bit-PHP erhöht.]]></item>
                <item name="wcf.global.next"><![CDATA[Lade nächsten Schritt …]]></item>
                <item name="wcf.global.next.description"><![CDATA[Die Installation lädt im Moment den nächsten Schritt. Bitte haben Sie einen Augenblick Geduld.]]></item>
                <item name="wcf.global.configureDB"><![CDATA[Datenbankzugang konfigurieren]]></item>
index 03a2775eaaee7c9cd692513bdab6683fa4228f78..d4d7fbfb5a670d0eac3a81db5d9d732607ddc847 100644 (file)
@@ -50,6 +50,8 @@
                <item name="wcf.global.systemRequirements.cookie.description"><![CDATA[The web browser must send cookies back to the web server.]]></item>
                <item name="wcf.global.systemRequirements.tls"><![CDATA[Encrypted HTTPS Connection (SSL/TLS)]]></item>
                <item name="wcf.global.systemRequirements.tls.description"><![CDATA[The setup is accessed via an unencrypted HTTP connection. For privacy and security only encrypted HTTPS connections should be used. Unencrypted connections should be redirected to the encrypted variant. Some features might be unsupported when using unencrypted connections, as web browsers restrict some features for use with encrypted connections only.]]></item>
+               <item name="wcf.global.systemRequirements.x64"><![CDATA[64-bit Support]]></item>
+               <item name="wcf.global.systemRequirements.x64.description"><![CDATA[A PHP version with support for 64-bit integers is required to correctly process numbers larger than ~2.1 billion. Without 64-bit support some functionality might be unavailable or return incorrect results. Furthermore the request processing speed of 64-bit PHP is increased compared to 32-bit PHP.]]></item>
                <item name="wcf.global.next"><![CDATA[Loading next step …]]></item>
                <item name="wcf.global.next.description"><![CDATA[The installation is currently loading the next step, please wait.]]></item>
                <item name="wcf.global.configureDB"><![CDATA[Configure Database Access]]></item>
index 059e381f6d7fe90a620db372621afdf6d40bc7bb..8cee1cbe34234c7352126126b26d8f23a0ff42e6 100644 (file)
        <section class="section">
                <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.recommended{/lang}</h2>
                
+               <section class="section">
+                       <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.x64{/lang}</h2>
+                       
+                       <div class="row rowColGap formGrid">
+                               <dl class="col-xs-12 col-md-6">
+                                       <dt>{lang}wcf.global.systemRequirements.element.required{/lang}</dt>
+                                       <dd>{lang}wcf.global.systemRequirements.active{/lang}</dd>
+                               </dl>
+                               
+                               <dl class="col-xs-12 col-md-6">
+                                       <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
+                                       <dd>
+                                               <span class="badge {if !$system.x64.result}red{else}green{/if}">
+                                               {if !$system.x64.result}{lang}wcf.global.systemRequirements.notActive{/lang}{else}
+                                                       {lang}wcf.global.systemRequirements.active{/lang}
+                                               {/if}</span>
+                                               {if !$system.x64.result}<small>{lang}wcf.global.systemRequirements.x64.description{/lang}</small>{/if}
+                                       </dd>
+                               </dl>
+                       </div>
+               </section>
+
                <section class="section">
                        <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.tls{/lang}</h2>