WebsiteBaker Logo
  • *
  • Templates
  • Help
  • Add-ons
  • Download
  • Home
*
Welcome, Guest. Please login or register.

Login with username, password and session length
 

News


WebsiteBaker 2.13.9 R25 is now available!


R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WB
https://forum.websitebaker.org/index.php/topic,32355.0.html


* Support WebsiteBaker

Your donations will help to:

  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!

You can donate by clicking on the button below.


  • Home
  • Help
  • Search
  • Login
  • Register

  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • PHP 8.5
  • Print
Pages: [1]   Go Down

Author Topic: PHP 8.5  (Read 167 times)

Offline ruebenwurzel

  • Betatester
  • **
  • Posts: 8576
  • Gender: Male
  • Keep on Rockin
    • Familie Gallas Online
PHP 8.5
« on: January 25, 2026, 06:25:16 AM »
Hallo,

mein Hoster bietet PHP 8.5 an. Habe mal testweise eine WB 2.13.9 r25 umgestellt: Das Fehelerprotokoll wirft folgendes aus:

Code: [Select]
Sun, 25 Jan 2026 05:18:21 +0000 [E_DEPRECATED] /modules/form/view.php:[158] from /modules/droplets/droplets.php(43) : eval()'d code:[31] require "Non-canonical cast (double) is deprecated, use the (float) cast instead"
Sun, 25 Jan 2026 05:18:21 +0000 [E_DEPRECATED] /include/captcha/Securimage.php:[2714] from /vendor/composer/ClassLoader.php:[576] include "The backtick (`) operator is deprecated, use shell_exec() instead"
Sun, 25 Jan 2026 05:18:21 +0000 [E_DEPRECATED] /include/captcha/Securimage.php:[2979] from /vendor/composer/ClassLoader.php:[576] include "The backtick (`) operator is deprecated, use shell_exec() instead"
[25-Jan-2026 05:18:21 UTC] PHP Deprecated: Function imagedestroy() is deprecated since 8.5, as it has no effect since PHP 8.0 in /www/htdocs/v141252/matthias_gallas_de/include/captcha/Securimage.php on line 1988"

Ist geplant WB 2.13 PHP 8.5 kompatibel zu machen, oder geschieht das erst mit der nächsten Version?

Schönen Sonntag wünscht

Matthias
Logged

Offline sternchen8875

  • Global Moderator
  • *****
  • Posts: 710
Re: PHP 8.5
« Reply #1 on: January 25, 2026, 11:42:18 AM »
Quote
Ist geplant WB 2.13 PHP 8.5 kompatibel zu machen, oder geschieht das erst mit der nächsten Version?

Wenn du andere Ideen hast, wie man eine Änderung unter die Leute zaubert, immer ran damit. Ich persönlich halte wenig davon, jeden 2. Tag eine neue Version zu veröffentlichen, weil wieder irgendwas entdeckt wurde. Allerdings bin ich mit der Meinng auch recht einsam.
Wir haben zwar alle unsere Testumgebungen und Websites auf PHP 8.5 zu laufen, aber es kommt wohl auch immer auf den Anwendungsfall an. Darum ist man eben auch auf Input von außen angewiesen, sprich: vom Forum.

Zu deinen Meldungen

#1 beruht auf einem Fehler im Dropletcode, da mußt du selbst schauen, was wo wie genutzt wurde

zu #2 + #3
ersetze in genannter Datei include/captcha/Securimage.php 2x
Code: [Select]
$data = `$sox_cmd`;mit
Code: [Select]
$data = shell_exec($sox_cmd);(ist übrigens schon seit PHP 8.0 auf deprecated - da bist du also eher die Ausnahme mit der Meldung)

zu #4
imagedestroy() kann überall ersatzlos gelöscht werden, zieht sich quer durch Core und diverse Module
Logged

Offline ruebenwurzel

  • Betatester
  • **
  • Posts: 8576
  • Gender: Male
  • Keep on Rockin
    • Familie Gallas Online
Re: PHP 8.5
« Reply #2 on: January 26, 2026, 07:03:21 AM »
Hallo,

vielen Dank, secureimage.php hab ich gefixt. Meldung vom Form/Droplet ist nicht mehr aufgetaucht. Falls es nochmal kommt schau ich was das Problem sein könnte.

Auf einer anderen Domäne, die ich auf PHP 8.5 umgestellt habe habe ich folgende Errorlog Eintrag:

Code: [Select]
Mon, 26 Jan 2026 04:01:16 +0000 [E_DEPRECATED] /admin/logout/index.php:[80] from /admin/logout/index.php:[80] bin\Exceptions\ErrorHandler::handler "Using null as an array offset is deprecated, use an empty string instead"
Zwecks neuer Version. Ich geh da mit dir, weniger ist mehr. Nicht jedes kleine fitzelchen braucht ne neue Version. Die macht erst dann Sinn wenn grundlegend neues oder dringende Sicherheitslücken, die geschlossen werden müssen, es erfordern. Deprecated-Meldungen sehe ich erst mal nur als Hinweis ohne den Zwang sofort tätig werden zu müssen.

Matthias 
Logged

Offline ruebenwurzel

  • Betatester
  • **
  • Posts: 8576
  • Gender: Male
  • Keep on Rockin
    • Familie Gallas Online
Re: PHP 8.5
« Reply #3 on: January 26, 2026, 07:21:39 AM »
Hallo,

ChatGPT bietet folgendes an:

nach Zeile 59 einfügen:
Code: [Select]
// PHP 8.5+: using null as an array offset is deprecated
    $oldId = is_string($oldId) ? $oldId : '';

Zeile 80 (neu 82) ändern:
Code: [Select]
if ($oldId !== '' && isset($_COOKIE[$oldId])) {
Passt das? In der Anlage gefixte Datei
Logged

Offline ruebenwurzel

  • Betatester
  • **
  • Posts: 8576
  • Gender: Male
  • Keep on Rockin
    • Familie Gallas Online
Re: PHP 8.5
« Reply #4 on: January 26, 2026, 07:43:36 AM »
Hallo,

Deprecated Meldung im Form

Code: [Select]
Mon, 26 Jan 2026 06:26:42 +0000 [E_DEPRECATED] /modules/form/view.php:[158] from /framework/frontend.functions.php:[286] require "Non-canonical cast (double) is deprecated, use the (float) cast instead""
Lösungsvorschlag ChatGPT:

modules/form/view.php ab Zeile 155:
Code: [Select]
function new_submission_id() {
     $submission_id = '';
     $salt = "abchefghjkmnpqrstuvwxyz0123456789";
-    \srand((double)microtime()*1000000);
-    $i = 0;
-    while ($i <= 7) {
-        $num = \rand() % 33;
-        $tmp = \substr($salt, $num, 1);
-        $submission_id = $submission_id . $tmp;
-        $i++;
-    }
+    for ($i = 0; $i < 8; $i++) {
+        $submission_id .= $salt[\random_int(0, \strlen($salt) - 1)];
+    }
     return $submission_id;
 }

Kann man das so machen?
Logged

Offline ruebenwurzel

  • Betatester
  • **
  • Posts: 8576
  • Gender: Male
  • Keep on Rockin
    • Familie Gallas Online
Re: PHP 8.5
« Reply #5 on: January 26, 2026, 10:25:16 AM »
Einen hab ich noch.

Auch das Modul cwsoft_anynews v 2.15.3 das ich noch im Einsatz habe wirft unter PHP 8.5 deprecated Meldungen aus. In der Anlage die gefixte Version der anynews_function.ph p.

Einfach ins Verzeichnis modules/cwsoft_anynews/code kopieren und die bestehende Datei überschreiben. Damit ist auch dieses Modul PHP 8.5 kompatibel. :-)

Matthias
Logged

Offline sternchen8875

  • Global Moderator
  • *****
  • Posts: 710
Re: PHP 8.5
« Reply #6 on: January 26, 2026, 12:25:44 PM »
Quote from: ruebenwurzel on January 26, 2026, 07:21:39 AM
Hallo,

ChatGPT bietet folgendes an:

nach Zeile 59 einfügen:
Code: [Select]
// PHP 8.5+: using null as an array offset is deprecated
    $oldId = is_string($oldId) ? $oldId : '';

Zeile 80 (neu 82) ändern:
Code: [Select]
if ($oldId !== '' && isset($_COOKIE[$oldId])) {
Passt das? In der Anlage gefixte Datei

Kann man so machen
Ich hatte in der vorbereiteten R26 zwar schon eine andere Lösung drin
Code: [Select]
if (!empty($oldId) && isset($_COOKIE[$oldId]))
aber deine ist selbsterklärend. Wichtig ist, das $oldId am Ende nicht null ist, es muß ein String sein

Wird so übernommen in die nächste Version
Admin Comment: Hab mir das noch einmal angeschaut und festgestellt, das eine Codezeile verschwunden ist und zwar die, die die angemeckerte Variable $oldId definiert
« Last Edit: January 29, 2026, 01:35:02 PM by sternchen8875 »
Logged

Offline sternchen8875

  • Global Moderator
  • *****
  • Posts: 710
Re: PHP 8.5
« Reply #7 on: January 26, 2026, 01:00:09 PM »
Quote from: ruebenwurzel on January 26, 2026, 07:43:36 AM
Hallo,

Deprecated Meldung im Form

Code: [Select]
Mon, 26 Jan 2026 06:26:42 +0000 [E_DEPRECATED] /modules/form/view.php:[158] from /framework/frontend.functions.php:[286] require "Non-canonical cast (double) is deprecated, use the (float) cast instead""
Lösungsvorschlag ChatGPT:

modules/form/view.php ab Zeile 155:
Code: [Select]
function new_submission_id() {
     $submission_id = '';
     $salt = "abchefghjkmnpqrstuvwxyz0123456789";
-    \srand((double)microtime()*1000000);
-    $i = 0;
-    while ($i <= 7) {
-        $num = \rand() % 33;
-        $tmp = \substr($salt, $num, 1);
-        $submission_id = $submission_id . $tmp;
-        $i++;
-    }
+    for ($i = 0; $i < 8; $i++) {
+        $submission_id .= $salt[\random_int(0, \strlen($salt) - 1)];
+    }
     return $submission_id;
 }

Kann man das so machen?

Hier gibt es gleich mehrfach etwas zu meckern an der alten Version

double() und float() waren beides Synonyme für das Gleiche, nämlich float(). Im Interesse besserer Codeverständlichkei t wurde double() nun abgeschafft.

Aber: auch srand() und rand() gelten als veraltet und stehen auf der Deprecated-Liste seit PHP 8.3, weil deren Ergebnisse durchaus vorhersehbar sind. Für sicherheitsrelevate Funktionen, (z.b. Token-Erstellung) sollten beide Funktionen nicht mehr verwendet werden. Bei uns gehts nur um eine ID  :wink:
Wir könnten der Sache auch durch die Verwendung einer IDKey aus dem Wege gehen, ist aber nur Theorie im Moment

Deine Lösung behebt erst einmal die Meldung zur double()-Funktion

ungetestet wäre dies mein Favorit für die Zukunft, aber da braucht es noch ein wenig Testerei

Code: [Select]
if (!\function_exists("new_submission_id")) {
    function new_submission_id() {
        $submission_id = '';
        $salt = "abchefghjkmnpqrstuvwxyz0123456789";
        $saltLength = strlen($salt) - 1;
       
        $i = 0;
        while ($i <= 7) {
            $num = random_int(0, $saltLength);
            $submission_id .= $salt[$num];
            $i++;
        }
        return $submission_id;
    }
}

Logged

  • Print
Pages: [1]   Go Up
  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • PHP 8.5
 

  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2