Kommentare von

beats TEST blog

Styx 3.8.2 und PHP 8.0.16

Ian Styx am |

Moin Beat

Merkwürdig.... Das ist ja mal ein stack trace über 17 Stationen... Whow!

Moment....

Ian Styx am |

Ja das ist ein verzwicktes Ding. Ich habe tatsächlich an der

serendipity_set_config_var

Funtion geschraubt und vermeindlich die besseren (und korrekteren) Werte gesetzt. Allerdings ist es ja so, dass du selber sagst es würde auf dem LIVE Blog nicht auftreten. Ich kann es hier bei mir local mit PHP 8.2  auch nicht nachstellen.

Was genau unterscheidet deine Einstellungen und Platz des emoticonchooser Plugins von hier?

Meine Vermutung ist aber, dass es sich entweder um ein merkwürdiges Cache Problem des NGinx Proxys handelt (und sich damit möglicherweise bald in Luft auflöst) oder vermutlich eher eine Frage der PHP Version ist. Seit PHP 8 schrauben die Entwickler an den Typen herum, also int, string, array etc. PHP 8.0, 8.1, und 8.2 unterscheiden sich da in der Strenge bzw Genauigkeit. Grundsätzlich wird es strenger und genauer und damit tendenziell besser und sicherer, aber es können auch versionsabhängige Fehler unter bestimmten Vorraussetzungen auftreten.

Welche PHP Version fährt der LIVE Blog?

Als dritte Variante kann es sein, dass die

Incorrect integer value: '' for column `styx3`.`styx_config`.`authorid`

Fehlermeldung auf das vorherige value zurückzuführen ist. Dies ist in dem Fall ein javascript snippet des emoticonchooser Plugins und stellt eine Besonderheit unter den value strings dar, da es single quotes und double quotes beinhaltet und möglicherweise beim INSERT den darauf folgenden authorid Parameter in irgendeiner fehlerhaften Weise beeinflusst.

Um das weiter auszutesten muss ich aber erst die vorherigen Fragen beantwortet haben.

Möglichweise wird dann die Lösung des Problems in einem temporären workaround für dich, oder in einem Styx Bugfix und Point Update bestehen das unterschiedliche PHP Versionen berücksichtigen muss... mal sehen.

Auf alle Fälle lässt sich das Problem kurzfristig umgehen in dem man das emoticonchooser Plugin temporär deaktiviert.

Ian Styx am |

Mist. Letzteres stimmt nur bedingt, denn das Problem tritt auch an anderer Stelle auf. Und erhärtet damit die PHP (Versions) Vermutung!

Frage(n): Lässt sich im LIVE Blog die Mediathek aufrufen? Und, kann man die Konfiguration fehlerfrei abspeichern?

Ach, eine weitere Frage hätte ich noch... Wurden beide Systeme mit dem autoupdate Plugin geladen und ausgeführt, oder hast du eventuell hier mit FTP gearbeitet?

Beat Post author am |

Also:

  • emoticonchooser steht in beiden Installationen an 6. Stelle und ist beides Mal V3.32
  • PHP ist bei beiden Installationen V8.0.20

D.h. Links wie rechts ist beides gleich... (was Dir nun so gar nicht weiter hilft).

Ja, auf www.beatsblog.ch kann ich die Mediathek aufrufen und sie wird korrekt angezeigt. Wenn ich das hier mache, kriege ich auch eine Error-Page (am Schluss: /include/db/mysqli.inc.php on line 76).

Und ja: Beide Upgrades wurden mit autoupdate durchgeführt und bei beiden waren alle Plugins aktuell.

Beat Post author am |

Nachtrag: Wenn ich emoticonchooser deaktiviere, kann ich einen neuen Beitrag schreiben. Rufe ich hingegen die Mediathek auf, erhalte ich immer noch folgende Fehlermeldung:

Fatal error: Uncaught mysqli_sql_exception: Incorrect integer value: '' for column `styx3`.`styx_config`.`authorid` at row 1 in /include/db/mysqli.inc.php:76 Stack trace: #0 /include/db/mysqli.inc.php(76): mysqli_query(Object(mysqli), 'INSERT INTO sty...') #1 /include/db/db.inc.php(78): serendipity_db_query('INSERT INTO sty...') #2 /include/functions_config.inc.php(115): serendipity_db_insert('config', Array) #3 /include/functions_images.inc.php(3241): serendipity_set_config_var('last_image_hash', '31dba9972dcfab3...', 0) #4 /include/functions_images.inc.php(6430): serendipity_displayImageList(1, true, NULL, false, NULL, Array) #5 /include/admin/images.inc.php(1042): showMediaLibrary() #6 /serendipity_admin.php(144): include('/var/www/vhosts...') #7 {main} thrown in /include/db/mysqli.inc.php on line 76

 

Ian Styx am |

In der Tat! Das ist extrem erstaunlich. Ich hätte jetzt damit gerechnet dass du dort schon PHP 8.1 hättest. Denn das zwei exakt gleiche Versionen so unterschiedlich reagieren ist irgendwie wie ein Fehler in der Matrix.

Ich habe den Fehler inzwischen auch unter PHP 7 nachstellen können. Und der eigentliche Fix ist recht einfach.

Suche mal in der include/functions_config.inc.php nach

(int)$authorid));

ca Zeile 115 und ändere es mal in

(string)$authorid));

Ich muss also doch noch einmal verschiedene PHP Versionen auf ihr diesbezügliches Verhalten (Typisierung einer Variable über ein Array mit anschließendem DB INSERT unter Nutzung von MYSQLI_REPORT_* flags) untersuchen, damit solch ein Mißgeschick nicht noch einmal passiert.

Kannst du anschließend den fehlerfreien Betrieb damit bestätigen haue ich alsbald ein Update heraus.

EDIT: Bitte nicht wundern dass der Fehler jetzt auch beim Login auftritt, Er wird halt immer dann angezeigt, wenn eine Konfigurationsvariable neu geschrieben werden muss (in dem Fall die last update check Variable). Das Login funktioniert trotzdem, aber man muss dann von der Fehlerseite schnell mal woanders hin (im Backend) navigieren.

Beat Post author am |

Habe die Änderung in der include/functions_config.inc.php nun nachgeführt und kann bestätigen, dass ich nun keine Fehler mehr finde. Habe aber auch nicht lange getestet. Neuer Eintrag schreiben und Mediathek funktionieren wieder.

Wünsche einen schönen Sonntag!

Ian Styx am |

Jo... sieht gut aus. Herzlichen Dank. 🙏

Tut mir leid für die kleinen Unannehmlichkeiten mit dem Update.

Und ebenfalls schönen Sonntag noch! 😎

Ian Styx am |

Mich würde ja noch interessieren ob du es irgendwie herausbekommst was an den beiden 8.0.x Versionen so verschieden ist auf den beiden Servern. Vielleicht Fcgid vs apache2handler (als Modul) ? oder ähnliches. Hast du darüber keine Informationen vom Provider wäre ein Blick auf eine phpinfo Datei Ausgabe lohnenswert, aber so, dass nur du und ich sie mal einsehen können bevor du sie wieder löscht. Zb. in einem Order mit Auth Zugriffsschutz über htaccess und htpassw oder Ähnliches.

Styx 3.8.1 und PHP 8.0.16

Beat Post author am |

Mal eine kurze Frage, die auch nichts mit der aktuellen Version zu tun hat.

Im Backend sehe ich unter Statistiken die Top-Referrer, welche sich anscheinend sein Installationsbeginn aufsummieren. In dieser Liste gibt es viele alte (eigene) Domains, die es so nicht mehr gibt. Überhaupt ist meine diesbezügliche Idee, dass ich diese Liste jeweils Anfang eines Jahres lösche und so gegen Ende des Jahres sehen kann, woher die Besucher kommen. Lange Rede, kurzer Sinn: ich wollte also die Tabelle styx_referres löschen stellte dann jedoch fest, dass die bereits leer ist, also Null Datensätze beinhaltet. 🤔 Hmm... woher kommen denn die angezeigten Daten? Aus styx_visitors? Und wenn ja, kann ich die einfach leeren oder nulle ich dadurch auch gleich meine Besucherstatistik?

Ian Styx am |

AAAAAlso Statistiken - by the statistic plugin - aggregieren ihre Daten aus der visitors Tabelle in die styx_refs Tabelle.

Wenn, dann ist es diese wo man das count Feld auf 0 zurücksetzen könnte. Aber ob das lohnt...? Es werden ja immer (nur)  die 20 meisten geordert. Werden alte urls nicht mehr aufaddiert, sollten sie zwangsläufig irgendwann aus der Liste fallen, meine ich... Die styx_visitors bzw ihre Daten wird ja ebenfalls kontinuierlich geleert nachdem sie in die vistors_count Tabelle aggregiert wurden.

Diese ominöse *_referrers Tabelle gehört zur function serendipity_track_referrer(), hat also nichts damit zu tun!

Beat Post author am |

Danke! Wieder etwas gelernt. 👍

Habe nun die styx_refs Tabelle zuerst exportiert und dann geleert. Mal sehen, wie sich das nun wieder aufbaut.

Styx 3.8.0 und PHP 8.0.15

Ian Styx am |

Alles klar Beat?

Hast du schon das dark mode Snippet ausgetauscht?
Und hattest du bemerkt dass ich dem pure theme ein paar default searchhighlight styles spendiert habe?
Warum bekommen styx.beat und styx.doku keine Updates mehr? ....tztztz 🙄 so geht das aber nicht!

Beat Post author am |

Welcome back! Ferien gehabt oder einfach sonst eine kleine Auszeit?

Hast du schon das dark mode Snippet ausgetauscht?

😁 Du kennst mich doch mittlerweile... 😂 Ich hab noch nicht mal bemerkt, dass ich da was austauschen sollte und so auf die Schnelle fällt mir nicht mal ein, wo genau ich das machen muss 😄.

Und hattest du bemerkt dass ich dem pure theme ein paar default searchhighlight styles spendiert habe?

Nö.. 🙄 Dafür habe ich doch ein eigenes Plugin installiert. Brauche ich das denn noch?

Warum bekommen styx.beat und styx.doku keine Updates mehr?

Ja, gib's mir! 😳 Ich fauler 🐶. Morgen hätte ich Zeit dafür... 😆

Beat Post author am |

Autsch. Wenn ich auf styx.dokumenzi.ch den Upgrade auf 3.8.0 abschliessen will (Soll ich die aufgeführten Funktionen ausführen? (Empfohlen) Ja, bitte ausführen), erhalte ich folgende Fehlermeldung:

Fatal error: Uncaught mysqli_sql_exception: Duplicate entry '3-1' for key 'authorgroup_idx' in /httpdocs/styx/include/db/mysqli.inc.php:76 Stack trace: #0 /httpdocs/styx/include/db/mysqli.inc.php(76): mysqli_query(Object(mysqli), 'CREATE UNIQUE I...') #1 /httpdocs/styx/include/functions_upgrader.inc.php(610): serendipity_db_query('CREATE UNIQUE I...') #2 /httpdocs/styx/include/admin/upgrader.inc.php(590): update_table_authorgroups() #3 /httpdocs/styx/serendipity_admin.php(303): require('/var/www/vhosts...') #4 {main} thrown in /httpdocs/styx/include/db/mysqli.inc.php on line 76

(Ja, ich habe vor dem System-Upgrade alle Plugins upgegradet)

Ian Styx am |

Schön wärs...

A: Aus der pure js in deine pure.js. Es fixt u.a.auch das mode Starticon wenn man das erste mal auf die Seite kommt.

B: Das Plugin ist weiterhin wichtig damit eben jene Elemente und Selektoren bei einem Suchrequest eingefügt werden. Du hattest, wenn ich mich recht erinnere, deine eigenen Farben in deiner user.css hinterlegt, weil wohl keine default bg Farben definiert waren. Pure bringt jetzt welche mit, die natürlich auch weiterhin in der user.css überschreiben werden können.

C: Recht so! 😄

...

Ups dann hast du es schon --- also einfach auf zurück und das Update mit NEIN abschließen sollte aber gehen... oder es ist einer dieser erwähnten rare cases, die man mit der aufgeführten Prozedur schnell erledigen kann. Edit2: Und wenn man genau liest, steht das sogar in der Fehlermeldung. Duplicate entry '3-1'...,  also ist 3 mit 1 mehrfach vorhanden, was nicht sein darf. (So ein mehrfacher Eintrag passierte früher bei Fehlermeldungen.)

Ian Styx am |

[de] Übersetzung der erwähnten und dort beschriebenen Upgrade Prozedur:

Starten Sie phpMyAdmin oder Ihr bevorzugtes Tool, wählen Sie die Tabelle styx_authorgroups und exportieren Sie sie vollständig in eine Datei. Dann löschen Sie die styx_authorgroups-Tabelle, bearbeiten den INSERT INTO VALUES-Teil Ihrer Sicherungsdatei, um doppelte Zeilen herauszufiltern und nur eindeutige Zeilen zuzulassen, und importieren diese Datei erneut. Jetzt ist alles gut und ein erneuter Aufruf dieser Upgrade-Seite sollte wieder funktionieren.

Beat Post author am |

YES! 👍

Beat Post author am |

O.K. Soweit jetzt alles up-to-date. Danke! :wave:

Ian Styx am |

🙂 Danke auch!

Noch nicht ganz... Denn Freetag hat gerade ein wichtiges Update erhalten.

Beat Post author am |

Auf beatsblog konnte ich freetag updaten. Bei den drei anderen Installationen muss ich noch warten, weil ich heute Morgen schon die Plugins upgedated habe und mir die neue Version deshalb wohl erst morgen angeboten wird.

PS: Ich hoffe, Du hattest nicht Frau Corona zu Besuch... 😒

Ian Styx am |

Nö. Eher Frau Pu... 😟

Ian Styx am |

Ah... ich sehe gerade es war doch nicht der snippet fix alleine, auch in der index.tpl muss das daynight mit /../ moon-fill.svg starten, sonst klappt das nicht für Neuankömmlinge bzw wenn die session abgelaufen ist.

Beat Post author am |

O.K. Habe das jetzt auch noch angepasst.

Total schräg ist, dass der daylight/darkmode-Umschalter auf www.beatsblog.ch in der Desktopversion von Chrome (zumindest bei mir) nicht funktioniert. Mobile-Chrome, Edge-Desktop und Firefox-Desktop und -Mobile funktioniert tadellos. 🤔 Bei diesem Testblog (blog.dokumenzi.ch), mit den gleichen Template-Files, funktioniert es... Ein Rätsel... Kannst Du bitte mal mit Chrome www.beatsblog.ch aufrufen und testen? Hoffe, der Fehler liegt nur bei mir lokal.