WebsiteBaker Community Forum

WebsiteBaker Support (2.13.x) => General Help & Support => Topic started by: hillschmidt on April 28, 2022, 09:31:06 AM

Title: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on April 28, 2022, 09:31:06 AM
Mir ist heute ein Problem aufgefallen: meine Droplets laufen problemlos nach dem Update auf WB 2.13.0 r63 unter PHP 7.4 .
Sobald ich aber auf PHP 8 umstelle, werden die Inhalte nicht mehr aufgelöst - es erscheinen die Klammern [[ ]] und der Code, aber nicht die Auflösung.

URL: https://www.hillschmidt.de/wb - Startseite mit der englischen Flagge oben und der aktuellen Jahreszahl 2022 im Footer beim Copyright.

Sobald ich PHP 8 einstelle, erscheint an den Stellen
Code: [Select]
[[_englishVersion?url=277]]und
Code: [Select]
© 1999-[[SHOW_YEAR]] Andreas Schmidt
Hier die Codes der beiden Droplets (es sind aber auch andere betroffen)

SHOW_YEAR:
Code: [Select]
return date('Y');
englische Seite (nein, für mich ist eine echte zweisprachige Seite zu viel):
Code: [Select]
if (isset($url)) {
return '<p style="text-align:right;">
<a href="[wblink'.$url.']">english version
<img alt="" height="19" src="https://www.hillschmidt.de/wb/media/gif/flag_gbr.gif" width="33" /></a>
</p>';
} else {
return '<p style="text-align:right;">
<a>english version
<img alt="" height="19" src="https://www.hillschmidt.de/wb/media/gif/flag_gbr.gif" width="33" /></a>
</p>';
}

Hat jemand eine Idee?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: ruebenwurzel on April 28, 2022, 09:48:10 AM
Hallo,

ein Upgrade auf 2.13.1 könnte das Problem beheben.

Matthias
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on April 28, 2022, 10:18:03 AM
Update auf 2.13.1 bringt folgenden Fehler mit PHP 8 - zeigt aber auch die Droplets unter PHP 7.4 an:

Code: [Select]
There was an uncatched exception
preg_match(): Argument #3 ($matches) cannot be passed by reference
in line (57) of (/framework/Utils/IpAddress.php):

Dann lasse ich jetzt 2.13.1 r103 und mache ein neues Problem auf. OK?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hgs on April 28, 2022, 10:39:37 AM
Hast du den Patch 114 installiert? (hilft für das Problem wahrscheinlich nicht, aber uptodate ist immer gut :) )


Kannst du sagen welches Droplet es ist?
Evtl. hier posten
Sorry, den Anfangspost nicht ganz zu ende gelesen.

Alle von WB mitgelieferten Droplets sind php8 tauglich gefixt.
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hgs on April 28, 2022, 10:43:51 AM

Hier die Codes der beiden Droplets (es sind aber auch andere betroffen)

SHOW_YEAR:
Code: [Select]
return date('Y');


Das Droplet mal bitte so ergänzen:

Code: [Select]
$datum = date("Y");
return "$datum";
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on April 28, 2022, 10:52:23 AM
Code: [Select]
$datum = date("Y");
return "$datum";
macht keinen Unterschied :-(
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hgs on April 28, 2022, 11:03:47 AM
Die Jahreszahl wird aber im Footer angezeigt, oder schau ich auf eine andere Domäne?

Auszug von deinem Link
© 1999-2022 Andreas Schmidt


Als Tester bin ich am Cache von diversen Browser schon verrückt geworden und die Entwickler haben Fehler gesucht, die es gar (nicht) mehr gab.
F5 wirkt da manchmal Wunder




Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on April 28, 2022, 11:10:23 AM
Ich bin ja wieder auf 7.4 zurückgegangen ... sobald ich PHP 8 aktiviere, taucht das Problem auf.
Und den Cache lösche ich immer bei solchen Aktionen ...
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hgs on April 28, 2022, 12:50:36 PM
Ich habe alles auf  php8.0 und es läuft auch alles,


das Droplet "year" nutze ich auch aktiv auf allen Domänen im Footer.


Sehr komisch, aber es gab ja im Tages-Rhythmus Patche, mal sehn was die Entwickler da noch so finden und  fix fixen.

Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: crnogorac081 on May 02, 2022, 11:37:57 AM
Update auf 2.13.1 bringt folgenden Fehler mit PHP 8 - zeigt aber auch die Droplets unter PHP 7.4 an:

Code: [Select]
There was an uncatched exception
preg_match(): Argument #3 ($matches) cannot be passed by reference
in line (57) of (/framework/Utils/IpAddress.php):

Dann lasse ich jetzt 2.13.1 r103 und mache ein neues Problem auf. OK?

I am seing this after installing patch 114 , using wb portable with php 7.4

is there patch 115 published ?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: Luisehahne on May 02, 2022, 11:49:39 AM
Patch R115 is under preparation, we will inform you

Dietmar
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: crnogorac081 on May 02, 2022, 12:20:03 PM
Ok. Is there a quickfix for this line in IpAddress.php ?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: Luisehahne on May 02, 2022, 02:34:43 PM
Ok. Is there a quickfix for this line in IpAddress.php ?
Fixed methode in /framework/Utils/IpAddress.php
Code: [Select]
<?php
    
public static function sanitizeIp(string $sRawIp): string
    
{
        
// clean address from netmask/prefix and port
        
$sPattern '/^[{\[]?([.:a-f0-9]*)(?:\/[0-1]*)?(?:[\]}]?.*)$/im';
        
$sIpAddress = \preg_replace($sPattern'$1'$sRawIp);
        if (\
strpos($sIpAddress':') === false) {
        
// sanitize IPv4 -------------------------------------------------------------- //
            
if (ip2long($sIpAddress) === false) {
                throw new \
InvalidArgumentException('illegal IPv4 address given!');
            }
        } else {
            
// sanitize IPv6 -------------------------------------------------------------- //
            // for backard compatibility it also check deprecated addressing where
            // IP includes a 32 bit IPv4 part and convert this into IPv6 format
            // sanitize IPv6 -------------------------------------------------------------- //
            
$sPattern '/^([:a-f0-9]*?)(?:(?:\:)([0-9]{1,3}(?:\.[0-9]{1,3}){3}))?$/is';
            
$aMatches = [];
            if (\
preg_match($sPattern$sIpAddress$aMatches)) {
                
$sIpAddress $aMatches[1].(isset($aMatches[2]) ? ':'.self::convertV4ToV6($aMatches[2]) : '');
            } else {
                throw new \
InvalidArgumentException('illegal IPv6 address given!');
            }
            
$sIpAddress self::expandIpV6($sIpAddress);
        }
        return 
$sIpAddress;
    }

Dietmar
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hgs on May 02, 2022, 02:55:42 PM
Hallo Dietmar
Der TeilCode, den du gepostet hast, ist laut "Diff Ceck" identisch mit dem TeilCode aus patch 114 in der besagten Datei.

Heißt das, dass Patch 114 das Problem fixen würde?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: crnogorac081 on May 02, 2022, 03:37:34 PM
I kind of solver it,

line 107
Code: [Select]
    public static function expandIpV6(string $sIpV6Address): string
    {
        $iPos = strpos($sIpV6Address, '::');
        if ($iPos !== false) {
//            $iInserts     = 8 - \count(\preg_split('/:/', $sIpV6Address, null, \PREG_SPLIT_NO_EMPTY));
// Replaced null with -1
            $iInserts     = 8 - \count(\preg_split('/:/', $sIpV6Address, -1, \PREG_SPLIT_NO_EMPTY));

I dont know if it is correct or not for further code I just saw preg_split documentation.

cheers
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: DarkViper on May 02, 2022, 04:00:09 PM
-1 is ok..     (Y) :wink:
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: Luisehahne on May 02, 2022, 04:03:51 PM
Hallo Dietmar
Der TeilCode, den du gepostet hast, ist laut "Diff Ceck" identisch mit dem TeilCode aus patch 114 in der besagten Datei.

Heißt das, dass Patch 114 das Problem fixen würde?

Correct

Dietmar
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: crnogorac081 on May 02, 2022, 04:50:25 PM
It looks like patch and this fix fixed some memory leak I had...Did anyone elxe experienced memory leak ?
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on August 07, 2022, 08:34:34 PM
Mit 2.13.2 r133 und PHP 8.0 habe ich weiterhin Probleme mit Droplets.

Auf bibelquiz.org wird der Fuß nicht mehr angezeigt; auf hillschmidt.de wird im Footer [[year]] statt 2022 angezeigt. Weitere Droplet, die unter PHP 7.x funktioniert haben, werden nicht mehr korrekt angezeigt.

Ich habe jetzt erst einmal PHP 8.0 gelassen - bin aber ratlos.
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: Luisehahne on August 07, 2022, 11:01:42 PM
Ich würde sagen du hast Probleme mit deinem Template, bzw. Scripte die den kompletten Seitenaufbau verhindern, schau in Seitenquelltext am Ende wird folgender Fehler geworfen und damit der Dom Aufbau untebrochen
Quote
<!-- div align=right><style type="text/css">.textus {color:#777777;font-size:0.8em;font-family:Arial;}</style>There was an uncatched exception<br />
Undefined constant "REMOTE_ADDR"<br />
in line (28) of (/usonline.php):<br />

Dietmar
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on August 08, 2022, 10:03:04 AM
 :wink:
Ganz herzlichen Dank - das war die Funktion der Anzeige, wieviele user online sind ... natürlich ein Asbach Uralt Script!

Damit ist mein Problem gelöst - da aber noch andere sich im Thread bewegt haben, mag ich nicht "gelöst" nutzen...
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: hillschmidt on August 08, 2022, 12:52:07 PM
achso: es war simpel: PHP 8.x ist strikter und lässt
Code: [Select]
getenv('REMOTE_ADDR'); ohne '' nicht mehr durch ... kaum hatte ich das im Script korrigiert, funktionierte alles wie gewünscht ... Eigentlich müsste ich das (ebenfalls alte) Template komplett überarbeiten oder ersetzen ….
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: frankyboy on August 31, 2022, 05:39:31 PM
Hallo zusammen - habe nach Update auf 2.13.2 r133 ein anderes Problem mit den Droplets:
diese funktionieren an sich. Templateunabhängig auf normalen WYSIWYG-Seiten. Nicht jedoch im Newsmodule (3.9.22).

Symptom: es wird bereits nicht gespeichert. Egal ob selber erstellte Droplets oder Standards wie [[Lorem]] und so. Scheinbar lässt das Newsscript [[]] verschwinden. Solange ich [xyz] schreibe wird das gespeichert. Wenn ich <p>[[xyz]]</p> erstelle, wird <p>&nbsp;</p> gespeichert. Da ich das Newsmodul für meine Nutzer etwas verschlangt und modifiziert habe, hab ich auf einer anderen Seite es mit einem jungfräulichem Newsmodul nochmal probiert (auch 2.13.2. r133, Droblets aktuell, Newsmodul aktuell). Gleiches Verhalten: es wird nicht gespeichert.

Habt ihr Ideen oder Ansätze was ich probieren könnte?
Danke,
Frank
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: frankyboy on August 31, 2022, 06:14:32 PM
Scheint auch nix mit dem WYSISYW-Editor zu tun zu haben, habe den mal global für WB deaktiviert, jede Kombination aus [[egalwashiersteht]] wird nicht gespeichert. und weiterhin nur im newsmodul.
Title: Re: Droplets in 2.13.0 r63 unter PHP 8 - Problem!
Post by: dbs on August 31, 2022, 06:27:56 PM
Scheint so im News Modul zu sein.
Der Entwickler hat da wahrscheinlich Sicherheitsbedenken und lässt Droplets nicht zu.
Passiert immer wieder mal.