Einschränkungen von 32-Bit-PHP
Wenn Sie Drupal auf einem System ausführen, auf dem PHP mit 32-Bit-Ganzzahlen kompiliert oder auf deren Verwendung beschränkt ist, können Sie nur Daten zwischen 1901 und 2038 eingeben (insbesondere vom 13. Dezember 1901, 20:45:52 UTC bis zum 19. Januar 2038, 03:14:07 UTC). Dies ist allgemein bekannt als der Jahr-2038-Fehler.
Ein häufiges Symptom ist, dass das Datum als 1970-01-01 angezeigt oder gespeichert wird, anstatt des erwarteten Werts außerhalb des oben genannten Bereichs. Dies betrifft alle PHP-Anwendungen. Insbesondere wirkt sich dies in Drupal auf datumsbasierte Feldtypen aus, also nur Datum und Datum & Uhrzeit, einschließlich des „Listen-Auswahl“-Widgets. Sie können Jahre außerhalb des Bereichs 1900 bis 2038 auswählen, aber da PHP diese selbst nicht verarbeiten kann, werden sie ohne Warnung als 1970-01-01 gespeichert/angezeigt.
Betroffene Produkte
- Offizielle Windows-Builds für PHP 5.x / 7.x für x86 und PHP 5.x für x64.
- Jedes Webstack-Paket (XAMPP, Wamp, etc.) mit PHP, das für eine 32-Bit-Version kompiliert ist und/oder auf einem 32-Bit-System läuft.
- Acquia Dev Desktop 2 bis zur Version vom 14. Juni 2018 (jetzt verwendet es 64-Bit-PHP und MySQL).
Hinweis: Entscheidend ist, wie PHP selbst kompiliert wurde: Wenn Sie eine 32-Bit-PHP-Version auf einem 64-Bit-Betriebssystem ausführen, treten die Probleme dennoch auf.
Testen
Um zu prüfen, ob Ihr PHP betroffen ist, können Sie diesen Einzeiler ausführen:
php -r "echo (date('y',strtotime('2039-01-01')) == 39 ? 'OK' : 'Y2K38 limitation') . PHP_EOL;"
Ein nicht betroffenes PHP gibt OK aus, ein betroffenes PHP gibt die Einschränkung Y2K38 aus.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.