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?
Hallo,
ein Upgrade auf 2.13.1 könnte das Problem beheben.
Matthias
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?
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.
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";
$datum = date("Y");
return "$datum";
macht keinen Unterschied :-(
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
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 ...
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.
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 ?
Patch R115 is under preparation, we will inform you
Dietmar
Ok. Is there a quickfix for this line in IpAddress.php ?
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
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?
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
-1 is ok.. (Y) :wink:
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
It looks like patch and this fix fixed some memory leak I had...Did anyone elxe experienced memory leak ?
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.
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
: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...
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 ....
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> </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
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.
Scheint so im News Modul zu sein.
Der Entwickler hat da wahrscheinlich Sicherheitsbedenken und lässt Droplets nicht zu.
Passiert immer wieder mal.