Skip to main content


!Friendica Support
Ich bekomme von beim Starten von Cron für worker.php ständig Fehlermeldungen:

PHP Notice: Undefined index: Psr\Log\NullLogger in /var/www/virtual/hiker/fri.bitcast.info/vendor/level-2/dice/Dice.php on line 134

Was ist da los?

reshared this

in reply to Hiker

@Hiker Der Dateipfad enthaelt /vendor/, wofuer Friendica nicht verantwortlich ist. Ich weis auch nicht, wieso bei dir der Fehler kommt (welche Branch nutzt du? Ich habe hier develop im Einsatz.
in reply to Hiker

Icn meine, es sei stable - also

Friendica 'Siberian Iris' 2021.09 - 1434
in reply to Hiker

Das Problem hatte ich vor zwei Wochen auch plötzlich, siehe hier.
Kurzfristige "Lösung": von PHP 7.4 auf PHP 7.3 switchen. Da aber 7.3 meines Wissens nicht mehr supportet wird, keine wirkliche Lösung.
Andere "Lösung": hinten an den cron-Job "> /dev/null 2>&1" anhängen, das sendet alle Fehlermeldungen ins Nirvana. Besser als alle paar Minuten eine Mail zu bekommen, aber Du erfährst nichts mehr von Fehlern, die evt wirklich etwas bedeuten.
in reply to Bionk

@Bionk Genau - der Fehler ist plötzlich bei einer laufenden Installation aufgetreten und ja, mit Workaround mit /dev/null habe ich die Fehlermeldungen vorerst unterbunden.
in reply to Hiker

Die verursachende Zeile 134 lautet
return $this->instances[$name];
anscheinend wird irgendein Instanzen-Name nicht initialisiert?
in reply to Hiker

@Hiker ist das eine bestehende Installation oder eine neue? Mit welcher Quelle hast du die Installation durchgeführt? Per GIT oder per stable Archiv unter https://files.friendi.ca/friendica-full-2021.09.tar.gz ? Hast du manuell installiert oder automatisch? Sind irgendwelche Addons aktiv?

Der Fehler kann aus meiner Sicht nur auftreten, wenn die Datenbank "frisch" initialisiert wird bei einer Durchführung (= Start des Cronjobs) und er dabei vorher nicht die NullLogger Instanz erzeugt hat .. Aber mir ist derzeit schleierhaft, wie diese Situation überhaupt enststehen kann, da Dice genau das verhindern sollte.
in reply to Philipp Holzer

@Philipp Holzer Bei mir ist es ja die gleiche Situation: gleiche Fehlermeldung bei Installation aus den stable-Archiven.
Meine Instanz lief schon mit der vorangegangenen stable und wurde dann auf 2021.09 aktualisiert.
Unknown parent

Hiker
@Roland Häder Genau so und solange, bis die Ursache gefunden und hoffentlich behoben ist. Aber die Flut der Emails (in der Cron-Zeit) musste ich mal abstellen.
Unknown parent

Hiker
@Roland Häder Ich habe die stable Version nicht per git, sondern via Dateien installiert - da gibts kein ./bin/composer.phar
https://friendi.ca/resources/download-files/
Unknown parent

Bionk
@Paulo da Silva Vollkommen klar, das es keine Lösung ist, daher die "..". Aber es verschafft etwas Ruhe für weitere Nachforschungen.
Hier den Link noch einmal ohne redir, dann sollte er lesbar sein. Er zeigt auf eine ähnliche Fehlerbeschreibung von mir samt dem PHP-Hinweis. Zwei Wochen alt, da gab es keine weiteren Diskussionen.
Ich wollte nur auf das mehrfache "spontane" Auftreten de Fehlers hinweisen und einen mutmaßlichen Zusammenhang mit der PHP-Version herstellen, denn er trat meines Wissens nach einem Update auf PHP 7.4.27 beim Hoster auf.
Nun steht die nächste Friendica stable an, ich werde also updaten und dann auf PHP 7.4 zurück switchen und wenn der Fehler dann immer noch Auftritt, dann lohnt sich eine eingehendere Untersuchung.
in reply to Bionk

@Bionk Hier ist auch PHP Version 7.4.27 installiert - scheint tatsächlich einen Zusammenhang zu gegeben.
Unknown parent

Bionk
Ich habe habe/dev/nul selbst aus diesen Gründen auch nicht gesetzt. Es hilft halt akut, wenn alle paar Minuten eine Mail kommt.
Verständnisfrage: beim Betrieb als Daemon müssten doch die gleichen Fehlermeldungen ausgeworfen werden. Kommen die Mails durch den Aufruf via cron und ich finde die Fehler sonst nur im log?
in reply to Hiker

Genau wie bei mir: kein git, stattdessen über die Archive.
Unknown parent

Hiker
@Roland Häder Dateien haben hier 664.
Unknown parent

Bionk
aha ;-) das muss ich mir erst einmal entkusseln.
Unknown parent

Hiker
@Roland Häder Woher kommt bei dieser Installation denn dieses "Leben"? Per Download?
Unknown parent

Philipp Holzer
@Roland Häder das ist das Archiv, mit dem ich auch das Dockerfile befülle & strukturell identisch auch mit den laufenden DEV-Snapshots, die ich bei opensocial.at als auch bei friendica.philipp.info verwende.

Hab auch eben das stable nochmal ausgecheckt und per composer erneut installiert --> ich bekomme keinen Fehler :-/

@Hiker interessant wäre, ob du mit dem neuesten 2021.12-rc Archiv noch immer diese Probleme hast, weil der Release Candidat ist kurz vor der Release.
in reply to Hiker

@Michael Vogel Was sagst du? Soll @Hiker besser upgraden? Ich kann den Fehler weder unter 2021.09 noch unter 2021.12-rc nachstellen...
in reply to Bionk

@Bionk Hast du ein Update gemacht? Bin auch bei Uberspace... läuft aber nicht. Wieder zurück zur alten Version.
in reply to Hiker

Bin gerade dabei. Vor zwei Minuten (19:30 Uhr) ist der erste /bin/worker.php nach dem Update gelaufen und es sieht soweit gut aus.
Ich bin noch auf PHP 7.3 und es kam keine Mail vom CronJob.
Mit "uberspace tools version use php 7.3" solltest Du auch auf diese Version switchen können und bräuchtest dann /dev/null nicht.
Ich probiere gleich mal die PHP 7.4 und melde mich dann noch einmal.
in reply to Bionk

Update auf 2022.02 erfolgreich durchgeführt, das Datenbankupdate auf 1449 ist inzwischen auch durch.
Ich arbeite mit den Archiven und ohne git.

@Michael Vogel Autsch, beim testweise Umschalten auf PHP 7.4 kommt nun ein 500 Internal Server Error :-(

Nach dem Zurücksetzen auf PHP 7.3 funktioniert alles wieder wie es soll.

@Hiker Versuche es mal mit
"uberspace tools version use php 7.3"

in reply to Bionk

...habe mal den Browser-Cache gelöscht und es auch mit diversen anderen Browsern auf dem Desktop und dem Smartphone probiert: Bei PHP 7.4 kommt immer der 500er-Error.
in reply to Bionk

@Bionk Ich habe da noch andere Dinge laufen - weiss nicht, wie die mit dem Umschalten auf 7.3 reagieren...
in reply to Philipp Holzer

Das Problem tritt bei @Hiker und mir offenbar nur unter PHP 7.4.27 auf. Bei mir mutmaßlich nach einem entsprechenden PHP-Update bei Uberspace.
@Philipp Holzer mit welcher Version hast Du das getestet?
Unknown parent

Hiker
@Tuxi 🐧 ✅ Ok, mal schauen, ob ich heute dazu komme...
in reply to Hiker

Zurück in der alten Version, erster Versuch mit Upgrade gescheitert - obwohl .htaccess kopiert wurde, endet der Aufruf im Error 500. Muss das Log File genauer ansehen..
in reply to Hiker

Irgend was ist wieder mit Dice - da gibts Fehlermeldungen...
in reply to Hiker

Evtl. werde ich heute nochmal einen Versuch für ein Upgrade starten... Aber das Audröseln des syslog, um den Fehler zu suchen, motiviert mich nicht wirklich.
Unknown parent

Bionk
@Michael Vogel
  • Die ersten fünf Notices sind das Umschalten auf PHP 7.4.
  • Dann kommt die erste Warnung beim Aufruf der Friendica-Login-Seite, gefolgt von acht weiteren Warnungen.
  • Der Zyklus von insgesamt neun Warnungen wiederholt sich fünf mal identisch, es sind also insgesamt sechs Zyklen mit je neun Warnungen.
  • Nun wird im Browser der 500er-Error von vorhin angezeigt.
[10-Feb-2022 21:34:31] NOTICE: configuration file /opt/uberspace/etc/snila/php-fpm.conf test is successful
[10-Feb-2022 21:34:31] NOTICE: using inherited socket fd=3, "/run/php-fpm-snila.sock"
[10-Feb-2022 21:34:31] NOTICE: fpm is running, pid 24296
[10-Feb-2022 21:34:31] NOTICE: ready to handle connections
[10-Feb-2022 21:34:31] NOTICE: systemd monitor interval set to 10000ms
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "[10-Feb-2022 21:34:34 Europe/Berlin] PHP Notice: Undefined index: Psr\Log\NullLogger in /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php on line 134"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "[10-Feb-2022 21:34:34 Europe/Berlin] PHP Fatal error: Uncaught TypeError: Argument 3 passed to Friendica\Database\Database::__construct() must implement interface PsrExt\Log\LoggerInterface, instance of Friendica\Core\Logger\Factory\Logger given in /var/www/virtual/snila/html/src/Database/Database.php:76"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "Stack trace:"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# [internal function]: Friendica\Database\Database->__construct(Object(Friendica\Core\Config\ValueObject\Cache), Object(Friendica\Util\Profiler), Object(Friendica\Core\Logger\Factory\Logger))"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php(132): ReflectionMethod->invokeArgs(Object(Friendica\Database\Database), Array)"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php(96): Dice\Dice->Dice\{closure}(Array, Array)"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php(247): Dice\Dice->create('Friendica\\Datab...', Array, Array)"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php(149): Dice\Dice->Dice\{closure}(Array, Array)"
[10-Feb-2022 21:34:34] WARNING: [pool www] child 24331 said into stderr: "# /var/www/virtual/snila/html/vendor/level-2/dice/Dice.php(96): Dice\Dice->Dice\{closure}(Arra in /var/www/virtual/snila/html/src/Database/Database.php on line 76"
#1 #3 #4 #2 #5 @Michael Vogel
Unknown parent

Bionk
...der hatte sich ja zuvor schon bei der 2021.09 über das Dice.php-Problem gewundert. Es beginnt wie zuvor bei der Zeile 134.
Unknown parent

Bionk
@Michael Vogel Kann ich eigentlich bedenkenlos im Betrieb zwischen den PHP-Versionen hin und herswitchen, oder muss ich Friendica dazu irgendwie anhalten?
Bisher ging das immer gut, aber die Backups sind auch noch frisch.
in reply to Hiker

Kann man bitte mal nachsehen, wo das Problem mit der aktuellen Version von Friendica mit PHP 7.4.27 liegt - Upgrade auf die aktuelle Version 2022.02 ist nicht möglich.
in reply to Hiker

Hier noch ein Log - irgend Probleme mit Dice

https://put.fedcast.ch/mez03ked

Ich kann leider nicht zurück auf PHP 7.3, sonst laufen andere Applikationen nicht mehr.
in reply to Hiker

Sieht ja genau so aus, wie mein Log von weiter oben.
@Hiker Ist PHP 8 eine Alternative für Dich? Michael hatte mal geschrieben, dass er auf der 8er arbeitet
This entry was edited (2 years ago)
in reply to Bionk

Ja ok, habe mal auf php mal auf Version 8.0 gestellt - Friendica hat Update gemacht. Muss jetzt noch schauen, ob die anderen Applikationen mit php 8.0 umgehen können...
in reply to Hiker

@Hiker Und, wie läuft es mit PHP 8.0?

Offenbar hat Uberspace am Donnerstag die Version 7.3 abgeschaltet, so das dieses Fallback nun entfällt.

Nachdem meine Instanz ein paar Tage down war, habe jetzt mal auf PHP 8.1 geswitched nun läuft es endlich wieder.
Apache- und PHP-Logs zeigen erstmal keine Aufflälligkeiten.
in reply to Hiker

Das ist total seltsam. Grob gesagt:

  • Friendica kann keine Instanz für \Psr\Log\NullLogger erstellen
  • Darum nimmt es die LoggerFactory
  • Aber die LoggerFactory kann erst aufgerufen werden, wenn die Datenbank da ist --> darum auch initial der NullLogger



Kannst du mal schauen, ob du die Datei findest mit PHP 7.4:
vendor/psr/log/Psr/Log/NullLogger.php

Die müsste er eigentlich laden .. und die ist eigentlich auch nicht unbedingt sehr komplex :D
in reply to Philipp Holzer

@Philipp Holzer Bin nicht ganz sicher, was Du meinst.
Die Datei vendor/psr/log/Psr/Log/NullLogger.php ist vorhanden und hat die Rechte 644 (rw-r--r--).

Ich vermute, dass ich sie mit
php vendor/psr/log/Psr/Log/NullLogger.php
aufrufen soll.

In PHP 7.3 kommt diese Meldung
[16-Feb-2022 00:15:22 Europe/Berlin] PHP Fatal error: Uncaught Error: Class 'Psr\Log\AbstractLogger' not found in /var/www/virtual/snila/html/vendor/psr/log/Psr/Log/NullLogger.php:13
In PHP 7.4 kommt dagegen diese Meldung
[16-Feb-2022 00:17:49 Europe/Berlin] PHP Fatal error: Cannot declare class Psr\Log\NullLogger, because the name is already in use in /var/www/virtual/snila/html/vendor/psr/log/Psr/Log/NullLogger.php on line 0