Freitag, 30. April 2021
Styx 3.4-alpha2 und PHP 8.0.3
Zeitstempel: 29.04.2021, 18:41 CET
Alles zur neusten alpha-Version im Zusammenhang mit PHP 8.0.3
Dieser Link ist nicht aktiv. Er enthält eine kopierbare Trackback-URI, um manuell ein Ping- und Trackback zu diesem Eintrag für ältere Blogsysteme zu generieren; zB (immer noch valide) über das zur Verfügung gestellte Eintragsfeld des serendipity_event_trackback Plugins. Serendipity und andere Blogsysteme erkennen die Trackback-URL heutzutage aber automatisch anhand der Artikel-URL. Die Trackback-URI für ihren Link des Sender-Eintrages lautet daher wie folgt: »https://www.blog.dokumenzi.ch/2658-Styx-3.4-alpha2-und-PHP-8.0.3.html«
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
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.
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:
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.
Beat-Admin am :
Nach dem Speichern des letzten Kommentars erhielt ich folgende Anzeige:
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 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
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
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:
Die aktuelle phpinfo habe ich in die Mediathek hochgeladen. Da steht rein gar nichts von opcache.so
Ian Styx am :
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)!
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 :
Hier die Antwort:
Wie zu erwarten war...
Ian Styx am :
Das zeigt nur dass sie komplett nicht verstanden haben. Das sind Support Mitarbeiter, (meist) keine Admins. (Sie sollen aber den Admins den Rücken freihalten.) Man muss ihnen sehr genau erklären dass sie es (trotzdem) weiterzugeben haben an jemanden, der damit etwas anzufangen weiß. Denn phpinfo() Einstellungen verweisen auf PHP Server Einstellungen und sind meist nur dort sinnvoll zu verändern, vorallem wenn es sich um disabled functions dreht, die durchaus hinterfragbar sind. Die
Funktion ist ja gerade dafür gedacht herauszufinden ob man opcache überhaupt verwenden kann. Sonst macht das aktivieren der library ja auch gar keinen Sinn, meine ich.
Beat Post author am :
Antwort auf die erneute Nachfrage:
Denn sie wissen nicht, was sie tun... ?
Ian Styx am :
Tatsächlich:
Plesk 17.8.11 - PHP value "disable_functions" changed to default value "opcache_get_status"
Aber ehrlich, das hat deinen hoster doch vorher doch auch nicht gestört. Rant: Und es stört sie auch nicht, dass sie immer noch eine alte openssl version OpenSSL 1.0.2k 26 Jan 2017 fahren. Das ist ein viel größeres Risiko! Weil viele der Verbesserungen erst in 1.1.1 eingeflossen sind. Und es stört sie scheinbar auch nicht das man opcache_get_staus() mit PHP 7.4 wohl auf ihrem Server dennoch verwenden(*) darf. Das macht doch keinen Sinn! (* Ehrlichwerweise muss man sagen dass wir das aber nicht so genau wissen, denn die Funktion ist ge@silenced, was mit PHP 7.4 noch geht, aber nicht mehr mit 8.)
Die Frage also ist, kann man den opcache trotzdem verwenden? Da er ja scheinbar trotz alledem enabled ist, denn die funktion fragt tatsächlich nur den Status ab.
Ian Styx am :
Setz mal unseren workaround in der functions.inc auf
Und bearbeite mal /bundled-libs/voku/simple-cache/src/voku/cache/AdapterOpCache.php in Zeile 36 von
auf
Das wäre ja mal spannend!
Beat Post author am :
O.K. Hab ich gemacht.
Musste jedoch die schliessende Klammer nach true entfernen, sonst knallt es in Zeile 37.
Beat Post author am :
Beliebter Fehler ? kicher..
Ich habe inwischen die mediasidebar rotate time wieder auf 5 Minuten gesetzt ... und ... et voilà ! ?
Beat Post author am :
Klingt gut ?.
Ehrlich gesagt weiss ich mittlerweile gar nicht mehr, weshalb wir diesem Fehler nachgerannt sind. Vielleicht sehe ich das falsch, doch das scheint doch eine Hosttech-PHP8.03-Plesk Eigenheit zu sein, die in dieser Form wohl nicht häufig vorkommt. Bei Manitu-PHP8.0.1 hatten wir diese Probleme gar nie.
Aber schön, wenn Du irgendeine Erkenntnis daraus gewinnen konntest. ?
Ian Styx am :
Deshalb https://www.blog.dokumenzi.ch/index.php?url=2658-Styx-3.4-alpha2-und-PHP-8.0.3.html#c7831
Ja es ist eine Plesk default "security" Einstellung für PHP, die ein Hoster natürlich überschreiben kann. Diese Funktion zu disablen bedeutet nur ein Gewinn an Sicherheit, dass man Informationen zum OPCache nicht ganz so leicht anderweitig abrufen kann. Sie wollten ursprünglich damit verhindern, dass auf einem Multi-User Server ein Hacker nicht ganz so einfach Informationen über User Nachbarn und Container Verteilung erhalten kann. Siehe Kommentar von https://www.php.net/manual/de/function.opcache-get-status.php zur Status Rückgabe. Mehr aber auch nicht. Das die Funktion opcache_get_configuration() aber dann doch verwendet werden kann (wenn du das bestätigst) macht es uns einfacher.
Manitu war vielleicht einfach klüger oder benutzt diese PLESK Version nicht.
Beat Post author am :
Dass es mit dem verlinkten Kommentar angefangen hat, ist mir klar. Doch diese Fehlermeldung ist ja schon länger weg. Aber egal. Ich muss nicht wirklich alles verstehen ?.
Ja, opcache_get_configuration() scheint zu funktionieren, denn das habe ich in der letzten Änderung ja eingefügt.
Manitu verwendet PLESK gar nicht. Ich denke, dass Sie die Benutzer-Oberfläche selber stricken (obwohl im footer etwas von "gentoo linux" steht).
Ian Styx am :
PlesK und Gentoo Linux sind zwei verschiedene Paar Stiefel. Das erstere ist eine eingekaufte Software für die Userverwaltung, ein AdministrationsBackend auf das du als Kunde ja auch Zugang erhälst, in PHP geschrieben. Das geben sie natürlich auch preislich weiter.
Das zweite ist das zugrundeliegende Server Linux OS. Bei hosttech wahrscheinlich eher ein anderes.
Ian Styx am :
Ja damit:
https://www.blog.dokumenzi.ch/2658-Styx-3.4-alpha2-und-PHP-8.0.3.html#c7844 (Minus Klammer als Edit3 ?)
Und die haben wir ja jetzt auch wieder außer Kraft gesetzt, so dass der Fehler eigenltich wiederkommen müsste.
Ian Styx am :
OK und jetzt einmal statt
(also dem true) mal mit dem
was, wenn es ginge, den ganzen Unsinn der genannten Einstellung offenbart! ?
Beat Post author am :
O.K. AdapterOpCache.php noch einmal angepasst.
Ian Styx am :
und last but not least ?
Bitte!
Beat Post author am :
O.K. AdapterOpCache.php erneut angepasst.
Und dann hat es wieder in Zeile 36 geknallt ?. Habe dann diesen Teil gelöscht:
also quasi einen Schritt zurück.
Ian Styx am :
Sehr apart ... macht aber auch Sinn - danke - jetzt kann ich es dann wohl selbst weiter anpassen, wir werden bei dir vorerst bei
bleiben. Aber eigentlich bräuchten wir eine Art Rückgabe als in etwa
für die Genauigkeit. Ich werde den voku Author mal befragen.
Ian Styx am :
Mir schwant gerade was ...setze mal in die functions.inc das hier ein.
und zwar vor das $opcache = true;//....
In der Seitenausgabe müsste dann soetwas wie bool true / bool true stehen...
Ian Styx am :
Puh OK habs gesehen. Kann wieder weg.
Ist alles in Ordnung!
Beat Post author am :
So gefällt es mir auch besser. ?
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.
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)
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
natürlich! ?
Ian Styx am :
Nachdem wir das nun geklärt haben, müsstest du noch ein paar andere Dinge nachholen...
am besten einfach drüberbügeln ist wohl am einfachsten. Ansonsten commits ansehen.
Trotzdem ist das mit dem $opcache in der functions.inc nur so eine Art workaround, bis geklärt ist, warum sie die status Funktion eigentlich abgestellt haben.
Beat Post author am :
O.K. Gemacht. ?
Beat Post author am :
Seit dem Update erhalte ich keine E-Mail-Benachrichtigungen mehr, wenn neue Kommentare eingegangen sind.
Ich nehme aber an, dass die nichts mit der Styx-Edition zu tun hat, denn im Live-Blog funktioniert das nach wie vor. Die Einstellungen habe ich natürlich kontrolliert. Daran liegt es nicht.
Ian Styx am :
Seit welchem update, den drei Dateien oder seit 3.4-alpha2 ?
Nachtrag: Laut auftretender Fehlermeldung hast du die functions_comments.inc doch noch nicht upgedated. Das ergibt header already sent Fehler die möglicherweise das email versenden verhindern.
Beat Post author am :
Ich hätte jetzt gesagt, dass dies seit dem Wechsel auf PHP8.0.3 der Fall ist. Habe ja erst heute Morgen auf Styx 3.4-alpha2 gewechselt und schon gestern kamen keine E-Mails mehr.
Und: Es ist halt wie immer... lesen müsste man können... ? Der Dateiname beinhaltet .inc
Ian Styx am :
Aber eine solche ohne .inc gibts gar nicht...?
Das wäre natürlich blöd wenn PHP 8 irgend etwas am Mailversandt abstellen würde. Vorerst müssen wir uns aber auf all die kleinen Fehler konzentrieren, die dann einfach eine runtime Unterbrechung darstellen und womögliche Folgefehler provozieren.
Ian Styx am :
Ich meine ich könnte die Ursache für die nicht geschickte email gefunden haben. Bitte einmal die Datei komplett mit dieser ersetzen.
https://raw.githubusercontent.com/ophian/styx/master/include/functions_comments.inc.php
Wenn es das wirklich ist, kann uns das mit PHP 8 noch an anderen Stellen passieren, die ohne einen geworfenes und bemerkbares Warning einfach so durchflutschen. Denn so aufmerksam wie du in diesem Fall ist man ja nicht immer und es gibt sicherlich einige events die hier möglicherweise betroffen wären...
Mail-Tester am :
Test mit der neuen functions_comments.inc.php
benachrichtige mich am :
Leider auch keine Mail...
Ich versuche es mal mit "Bei Aktualisierung dieser Kommentare benachrichtigen"
Beat Post author am :
Nein, leider auch nicht. Aktuell werden von diesem Testblog keinerlei Mails verschickt.
Ian Styx am :
Hmm komisch...
Du hast die angegebene URL für die functions_comments.inc.php auch wirklich benutzt?
Probiere nochmal die spamblock plugin Datei mit dieser hier zu ersetzen:
https://raw.githubusercontent.com/ophian/styx/master/plugins/serendipity_event_spamblock/serendipity_event_spamblock.php
Bei mir gehts (lt. debugging) aber immerhin bis genau zur Stelle an der die Mail versendet wird.
Funktioniert die PHP mail() Funktion denn sonst? ZB mit soetwas hier? (Bitte nach Benutzung nicht rumliegen lassen) ?
https://www.arclab.com/en/kb/php/how-to-test-and-fix-php-mail-function.html
PS. "Bei Aktualisierung dieser Kommentare benachrichtigen" betrifft nur Mail an Kommentatoren. Das ist die Subscription. Und das ist nicht das worüber wir hier verhandeln, die Benachrichtigungs eMail an den Bloginhaber!
Beat Post author am :
Habe alles genau so gemacht, wie gewünscht. Alles ohne Erfolg.
Habe nun -wie von arclab.com empfohlen- den Hosttech-Helpdesk angeschrieben und ihnen den Fehler gemeldet und das Mailscript angefügt.
Habe das mailtest.php nun wieder vom Server gelöscht.
Ian Styx am :
Gut so! (Ziemlich vermurkste Migration, oder? ?)
was hast du denn als Rückgabe bekommen?
Beat Post author am :
Ja, in allen Varianten (mit externen und internen Mailadressen) erhielt ich die Rückmeldung "Message accepted" doch in meinem Mailprogramm kam nie eine E-Mail an.
Ian Styx am :
Das ist ja noch mysteriöser...! Das hast du dem Support hoffentlich auch mitgeteilt.?
Beat Post author am :
Natürlich. ?
Wie empfohlen, habe ich dann auch den Code des Scripts angefügt.
Ian Styx am :
Sorry ? aber bei älteren Herrschaften bin ich mir nicht immer so sicher.... ?
Und Spam / Junk Ordner natürlich ebenfalls!?!
Beat Post author am :
Werd nicht frech! ? Nicht an einem Sonntag! ?
SPAM/Junk? Gibt es sowas?
Nein, auch dort nichts zu finden.
Beat Post author am :
Antwort des Helpdesk:
?hier werden sie geholfen?
Ian Styx am :
HALLLOOOOOOO... ? OOOH
PHP 8 mail() ist abgeschaltet bzw verweist ins Nirwana! Die sollen das gefälligst selbst mal ausprobieren! Das ist doch wirklich kein Zustand.
Und hattest du nicht gesagt es würde mit PHP 7.4 auch nicht klappem...?
Beat Post author am :
Ah, hier war es:
Wie durch Zauberhand funktioniert nun PHP-Mail auch mit PHP 8.0.5
Ich habe nichts gemacht. Es scheint, dass Hosttech den Fehler (im Stillen) korrigiert hat.
Wie auch immer: Problem erledigt! 👍
PS: Vielleicht war es auch ein PHP-Problem, denn damals war V8.0.3 aktiv und nun V8.0.5 (auch wieder ohne eine Aktion von meiner Seite).
Ian Styx am :
Eher das Erstere, würde ich sagen. Aber besser spät als nie! 😀
Beat Post author am :
Habe im Live-Blog soeben einen Beitrag geschrieben und darin einen Trackback gesetzt. Als ich diesen im Backend bewilligen wollte, habe ich wohl irgend einen falschen Knopf gedrückt (war schon müde und kann mich nicht mehr erinnern, worauf ich geklickt habe).?
Darauf erhielt ich folgende Anzeige:
Der Trackback wurde nicht gelöscht. Ich konnte ihn danach problemlos bewilligen.
Ian Styx am :
Oh Danke! committet.