Droplets in 2.13.0 r63 unter PHP 8 - Problem!

dbs

Scheint so im News Modul zu sein.
Der Entwickler hat da wahrscheinlich Sicherheitsbedenken und lässt Droplets nicht zu.
Passiert immer wieder mal.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

frankyboy

#24
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.

frankyboy

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

hillschmidt

achso: es war simpel: PHP 8.x ist strikter und lässt 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 ....

hillschmidt

 :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...

Luisehahne

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
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

hillschmidt

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.

crnogorac081

It looks like patch and this fix fixed some memory leak I had...Did anyone elxe experienced memory leak ?
Web developer

Luisehahne

Quote from: 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?

Correct

Dietmar
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

DarkViper

[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

crnogorac081

I kind of solver it,

line 107

    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
Web developer

hgs

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?
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

Luisehahne

Quote from: crnogorac081 on May 02, 2022, 12:20:03 PM
Ok. Is there a quickfix for this line in IpAddress.php ?
Fixed methode in /framework/Utils/IpAddress.php
<?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
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

crnogorac081

Ok. Is there a quickfix for this line in IpAddress.php ?
Web developer

Luisehahne

Patch R115 is under preparation, we will inform you

Dietmar
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

crnogorac081

Quote from: 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:

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 ?
Web developer

hgs

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.

LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

hillschmidt

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 ...

hgs

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




LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

hillschmidt

$datum = date("Y");
return "$datum";

macht keinen Unterschied :-(

hgs

Quote from: hillschmidt on April 28, 2022, 09:31:06 AM

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

SHOW_YEAR:
return date('Y');



Das Droplet mal bitte so ergänzen:

$datum = date("Y");
return "$datum";
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

hgs

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.
LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

hillschmidt

Update auf 2.13.1 bringt folgenden Fehler mit PHP 8 - zeigt aber auch die Droplets unter PHP 7.4 an:

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?

ruebenwurzel

Hallo,

ein Upgrade auf 2.13.1 könnte das Problem beheben.

Matthias

hillschmidt

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
[[_englishVersion?url=277]]
und
© 1999-[[SHOW_YEAR]] Andreas Schmidt

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

SHOW_YEAR:
return date('Y');

englische Seite (nein, für mich ist eine echte zweisprachige Seite zu viel):
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?