Weblog Kommentare
Styx 3.4-alpha2 und PHP 8.0.3
Beat Post author am |
Ups.
Habe mir die neue Serverkonfiguration angesehen und festgestellt, dass ich nun hier (dokumenzi/hosttech) PHP 8.0.3 nutzen könnte. Habe das auch kurz ausprobiert, doch dann hagelt es Fehler wie z.B.
- In der rechten Seitenleiste wird nur noch Fehlercode angezeigt.
- Der CKEditor wird für Kommentare nicht mehr geladen.
- Kommentare können nicht mehr gespeichert werden -> Error-Page
- Wenn ich eingeloggt bin und in einem anderen Fenster den Blog betrachte, sehe ich mehrere Fehlermeldungen oben am Bildschirmrand.
Bin deshalb zurück auf PHP 7.4.16. Wenn es Dir hilft, kann ich PHP 8.0.3 wieder aktivieren. Wir können die Fehlerdiskussion dann im neuen Styx-Forum führen ?.
Ian Styx am |
Das ist nicht wirklich möglich - hagelnde Fehler wären dann auch schon bei 8.0.0 und 8.0.1 aufgetreten. Das sind nur Minor PHP 8 Versionen die Bugs fixen. Ich bin schon seit 2 Monaten auf PHP 8.0.3 und gerade eben auf 8.0.5 umgestiegen. Und ich finde nur noch sehr vereinzelt irgendwelche warnings, geschweige denn Fehler.
Es wäre also gut wenn du das noch mal anstellst und ich mir das ansehen kann. Und gerne auch hier behandeln, denn das mit den neuen Styx discussions betrifft dich gar nicht, so du doch eine so schicke Testinstallation hast.
Ich nehme mal an es hätte einfach einen ordentlichen Seitenreload gebraucht.
Beat Post author am |
O.K. Stelle wieder auf PHP 8.0.3 um.
Ian Styx am |
Doch wahrscheinlich hängt das (auch?) mit dem Nginx Proxy zusammen, der müsste dann mit der neuen Konfiguration ersteinmal vollständig durchgeladen werden.
Ian Styx am |
Das erste oben ist die Geschichte mit dem ($matches[1] ?? '') in der functions routing,inc .du erinnerst dich?!
Wahrscheinlich jetzt die 2. Instanz davon in Zeile 306, während wir vor Wochen die erste Instanz in Zeile 260 behandelt hatten.
Das zweite ist merkwürdig. Das "Servenden" maunzt, dass es eine bestimmte PHP Funktion nicht gäbe. Das kann aber irgendwie nicht sein, denn sie ist weder deprecated noch unfunktional per bug oder so, soweit ich auf die Schnelle sehen konnte.
Probiere mal das history dat file zu löschen. Vielleicht hilft das schon.
Ich sehe gerade dass es sich um den cache der sidebar Bilder handelt. Also bitte den mal löschen. (Ich habe solange die Rotate image time von 5 auf 0 gesetzt.)
Beat-Admin am |
In eingeloggtem Zustand kann ich nicht in einem zweiten Fenster kommentieren. Ich erhalte die Error-Page mit folgendem Hinweis:
Warning: Undefined array key "phone" in /plugins/serendipity_event_spamblock_bee/serendipity_event_spamblock_bee.php: 411.
Administrative Login Error Warning only - not seen by visitors! Send us a note what happened where and when, please.
Beat-Admin am |
Nach dem Speichern des letzten Kommentars erhielt ich folgende Anzeige:
Fatal error: Uncaught Error: Call to undefined function opcache_get_status() in /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/bundled-libs/voku/simple-cache/src/voku/cache/AdapterOpCache.php:36 Stack trace: #0 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/bundled-libs/voku/simple-cache/src/voku/cache/Cache.php(255): voku\cache\AdapterOpCache->__construct(Object(Closure)) #1 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/bundled-libs/voku/simple-cache/src/voku/cache/Cache.php(161): voku\cache\Cache->autoConnectToAvailableCacheSystem(Object(voku\cache\CacheAdapterAutoManager), false) #2 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions.inc.php(1579): voku\cache\Cache->__construct(NULL, NULL, false, true, false, false, false, false, '', Object(voku\cache\CacheAdapterAutoManager), false) #3 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions.inc.php(1585): serendipity_setupCache() #4 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions_comments.inc.php(926): serendipity_cleanCache() #5 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions_comments.inc.php(1115): serendipity_approveComment(7830, '2657', true) #6 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions_comments.inc.php(1253): serendipity_insertComment('2657', Array, 'NORMAL', 'internal', Array) #7 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/include/functions_routing.inc.php(428): serendipity_saveComment('2657', Array, 'NORMAL') #8 /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/index.php(81): serveEntry(Array) #9 {main} thrown in /var/www/vhosts/dokumenzi.ch/httpdocs/styx-master/bundled-libs/voku/simple-cache/src/voku/cache/AdapterOpCache.php on line 36
Kann ich später ja wieder löschen (wegen den vollen Pfadangaben).
Beat-Admin am |
^ War beim letzten Kommentar wieder so.
Habe die (überarbeitete) functions_routing.inc.php von www.beatsblog.ch hierhin kopiert und nun wird die rechte Seitenleiste wieder angezeigt.
Ian Styx am |
Das zeigt nur dass deine Plugins nicht up to date sind. ? Bee ist 1.4.4. Damit ich weiter konnte habe ich das Update selbst schnell gemacht.
Ian Styx am |
Das routing warning war nur oben (angemerkt *) und hatte mit dem cache Fehler Zeug (rechts) nichts zu tun.
* Ebenso wie das subscribe warning ebenda in routing Zeile 426, Das habe ich gerade auf Styx gefixt.
Der voku cache Fehler tritt aber auch auf wenn man im Frontend einen Kommentar sendet und verweist in seiner (#x) Stack trace Liste dann aber auf kein Seitenleisten cache file. Insofern ist da vielleicht noch etwa zu machen. Komisch ist nur dass ich lokal bei mir mit allem was an internen debugging Einstellungen möglich ist, bisher solches überhaupt nicht nachstellen kann. Und die sind viel schärfer als deine dev Version.
Ian Styx am |
Inzwischen tendiere ich dazu das als eine Art "Bug" zu betrachten. Der Autor von voku/simple-cache müsste das besser abfangen.., bzw.
Wahrscheinlich ist aber die
opcache.so
library in deinem PHP 7.4.16(?) aktiviert bzw geladen aber eben im PHP 8.0.3 nicht, Aufschluss könnte dir eventuell ein Blick auf die phpinfo() Ausgaben geben, bzw eine Nachfrage beim Support. Vielleicht gibt es ja Gründe warum das nicht an ist oder sie sind vielleicht noch nicht dazu gekommen.
Ansonsten würde ich vorerst wieder auf PHP 7.4 zurückkehren. Aber das ist keine Dauerlösung!
Edit:
Vorher könnten wir allerdings mal schnell testen ob eine function exists Einklammerung per
if (function_exists('opcache_get_status')) {
use voku\cache\Cache;
......
alles bis zum define('serendipity_FUNCTIONS_LOADED', true);
}
define('serendipity_FUNCTIONS_LOADED', true);
an geeigneter Stelle etwas hilft. Zb in der functions.inc.php Datei wo der voku gesetzt wird ca Zeile 1547
Beat Post author am |
Sorry, ich kriege das mit den Änderungen in der functions.inc.php nicht gebacken?. Nach den gemachten Änderungen wird immer ein fatal error auf Zeile 1547 ausgeworfen. Ich denke jedoch, dass ich den Fehler ganz am Ende der Datei erzeuge, denn da steht dann 2x das Selbe:
}
define('serendipity_FUNCTIONS_LOADED', true);
}
define('serendipity_FUNCTIONS_LOADED', true);
/* vim: set sts=4 ts=4 expandtab : */
Die aktuelle phpinfo habe ich in die Mediathek hochgeladen. Da steht rein gar nichts von opcache.so
Ian Styx am |
Da steht rein gar nichts von opcache.so
Doch tut es!. Lass mal das .so weg bei der Suche. Opcache ist geladen und aktiviert! ABER unter disable_functions steht opcache_get_status und somit ist die benötigte Funktion deaktiviert. Was das soll begreife ich aber nicht..
Was sagt der support dazu? Gibt es einen vernünftigen Grund dies nicht zu aktivieren? (die phpinfo bitte wieder löschen)!
Ian Styx am |
Also dieser Nginx Proxy Cache treibt einen zum Wahnsinn, so oft wie der unerreichbare Seiten produziert und mit all den verbunden Nachteilen von runtime Sachen wie bee captchas etc.... ich weiß nicht ob die erworbene Schnelligkeit das wettmacht...
Naja seis drum, jedenfalls hast du mich mit der Klammer falsch verstanden, scheints.
if (function_exists('opcache_get_status')) {
..hier drin nun alles was zum cache gehört..
}
define('serendipity_FUNCTIONS_LOADED', true); //so endet die Datei
Beat Post author am |
Habe den Support angeschrieben und nachgefragt, ob das zeitnah eingeschaltet wird. Abwarten...
(Ich glaube, die haben jede Menge Arbeit. Die Ticketnummer ist seit der gestrigen Anfrage (utf8mb4) bereits über 250 höher)
Beat Post author am |
O.K. Jetzt kann die Seite (trotz meiner Änderungen) immerhin wieder geladen werden.
Nach dem Speichern eines Kommentars wird man jedoch immer noch auf eine Fehlerseite geworfen. Nun mit der Anzeige (unter Anderem):
/include/functions_comments.inc.php on line 918
Ian Styx am |
Mal ausprobieren... ?
Mit den tickets hast du vermutlich recht ?
Ian Styx am |
Ok .. Ich sehe das war noch nicht durchdacht genug.
Probiere es mal damit (kompletter Ersatz)
$opcache = function_exists('opcache_get_status')) ? true : false;
use voku\cache\Cache;
// Configure voku/simple-cache to use templates_c as directory for the opcache files, the fallback
// when Memcached and Redis are not used. Returns the configured cache object. Used internally by
// the other cache functions, you most likely never need to call this.
function serendipity_setupCache() {
global $opcache;
if ($opcache === false) {
return $opcache;
}
$cacheManager = new \voku\cache\CacheAdapterAutoManager();
$cacheManager->addAdapter(
\voku\cache\AdapterOpCache::class,
static function () {
global $serendipity;
$cacheDir = $serendipity['serendipityPath'] . '/templates_c/simple_cache';
return $cacheDir;
}
);
$cacheManager->addAdapter(
\voku\cache\AdapterArray::class
);
$cache = new Cache(
null,
null,
false,
true,
false,
false,
false,
false,
'',
$cacheManager,
false
);
return $cache;
}
function serendipity_cleanCache() {
global $opcache;
if ($opcache === false) {
return $opcache;
}
$cache = serendipity_setupCache();
return $cache->removeAll();
}
function serendipity_cacheItem($key, $item, $ttl = 3600) {
global $opcache;
if ($opcache === false) {
return $opcache;
}
$cache = serendipity_setupCache();
return $cache->setItem($key, $item, $ttl);
}
function serendipity_getCacheItem($key) {
global $opcache;
if ($opcache === false) {
return $opcache;
}
$cache = serendipity_setupCache();
return $cache->getItem($key);
}
define('serendipity_FUNCTIONS_LOADED', true);
/* vim: set sts=4 ts=4 expandtab : */
Edit: Nachgebessert und global eingefügt, sorry!
Edit2: Schließende Klammern eingefügt
Beat Post author am |
Nee, so geht das nicht. Zuerst wirft es einen Fehler auf Zeile 1457 (die erste) aus. Ich glaube, da fehlt eine öffnende Klammer ganz zu Beginn.
Wenn ich die Klammer einfüge, dann verschiebt sich der Fehler nach:
Parse error: syntax error, unexpected token "return" in /include/functions.inc.php on line 1556
Das ist dann bei der Zeile: return $opcache;
Ian Styx am |
Nee da fehlen schließende Klammern (siehe edit2) sorry!
Beat Post author am |
Ich habe es nur so lauffähig gekriegt, indem ich in der ersten Zeile die zweite schliessende Klammer entfernt habe. Sonst wird immer die erste Zeile (1547) angemeckert.
Nachtrag: So scheint es nun zu funktionieren. Nach dem Speichern des Kommentars erhielt ich nun keine Fehlermeldung mehr.
Ian Styx am |
hmmm what what ??? Ahhh - Du meinst
$opcache = function_exists('opcache_get_status') ? true : false;
natürlich! ?
Ian Styx am |
Beides! Lernen und vervollständigen. Denn das neue seit ein paar Tagen ließe sich durch ein schnelles Backup sicherlich retten und aufgepropft zurückspielen,
Das sollte es auch gar nicht sein, denn ein Backup wäre ja auch schon irgendwie gezogen, mit der Unsicherheit das der ganze Salat sich wiederholt. Es müsste sozusagen deine alte DB auf dem alten Server sein. damit man von dort mit dem richtigen Tool (*) eine korrekten Dump erstellen kann.
(*) PhpMyAdmin kann das, siehe beispielhaft
Das mit dem "notwendigen" Backup ist ein Erfahrungswert, der wohl jetzt erst beginnt vemehrt Daten zu liefern. Schaffen es Hoster darauf professionell Rücksicht zu nehmen ohne das man es ihnen extra sagen muss. Wir wissen ja zB auch nicht ob es tatsächlich ein Dump war. Vielleicht spielen da Dateisysteme und Ähnliches auch noch eine Rolle, bzw irgendwelche Zwischenablagen, angemessene Dateiformate, Editoren, etc..
Ian Styx am |
Nanu ????