Kommentare von

beats TEST blog

Styx 3.4-alpha2 und PHP 8.0.3

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 |

Nachdem wir das nun geklärt haben, müsstest du noch ein paar andere Dinge nachholen...

  • /plugins/serendipity_event_spamblock/serendipity_event_spamblock.php
  • /include/functions_comments.inc.php
  • /rss.php

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 dem Update erhalte ich keine E-Mail-Benachrichtigungen mehr

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.

Beat Post author am |

Hier die Antwort:

Besten Dank für Ihre Anfrage.

Das kann ich Ihnen nicht sagen aber ich würde sagen bleiben Sie auf PHP 7.4, bis das sicher aktiv ist.

Ich wünsche Ihnen einen schönen Tag.

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

opcache_get_status

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.

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? ?)

The output show either "Message accepted" or "Error: Message not accepted".

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