Fatal error: Unsupported operand types in ... user.module on line 2665
am 11.01.2017 - 23:35 Uhr in
Fatal error: Unsupported operand types in ... user.module on line 2665
Der Fehler tritt bei manchen Nodes auf und lässt sich nicht sinnvoll debuggen.
Vielleicht hängt es mit Usern zusammen, die bereits gelöscht wurden. Allerdings wurden diese Nodes nicht von gelöschten Usern erstellt, sondern von einem der Redakteure.
Es scheint auch mit entity references zusammen zu hängen: Entity Reference auf nicht mehr vorhandene Inhalte?
Wenn man diese Nodes neu erstellt und die gleichen Bilder und Files anhängt, dann funktionierts.
Es wird neben Entity Reference auch das Media Modul verwendet. Das Problem (oder ähnlich) trat auch bei Files auch, nicht nur hier im user.module, auch in common.inc
Welche Möglichkeit gibt es, diese Nodes (es sind dutzende) zu reparieren?
Wer oder was löst das Problem aus?
Wie kann man das Problem in Zukunft verhindern?
DANKE!
- Anmelden oder Registrieren um Kommentare zu schreiben
Das klingt danach,
am 13.01.2017 - 08:07 Uhr
dass direkt in der Datenbank gefummelt wurde.
Wenn zur Datenmanipulation nicht das Drupalsystem, sondern die Datenbank direkt verwendet wird, gibt es genau solche Effekte.
Dies nachzuvollziehen, ist schwierig und langwierig.
Du musst wirklich jeden betroffenen Datensatz finden, und ggf. korrigieren.
Da dies sehr stark davon abhängt, wie du die Records (content_types) aufgebaut hast, kann man dir per genereller Anweisung kaum helfen.
Grüße
Ronald
Problem eingegrenzt
am 13.01.2017 - 12:21 Uhr
In der Datenbank wurde gar nichts gefummelt.
Habe inzwischen das Problem eingegrenzt:
Unter den Nodes sind Kommentare von Usern, realisiert nicht mit dem Comment-Modul sondern mit Fields (reply).
Bei Nodes, die unten Kommentare enthalten von Usern, die inzwischen gelöscht wurden, versucht Drupal den Autor des Kommentars trotzdem anzuzeigen und dabei kommt es zu dieser Fehlermeldung im user.module (wenn sozusagen versucht wird auf einen User zuzugreifen ohne uid).
Dies ist ein Fehler im Drupal Code (user.module).
Welche Vorgangsweise dies zu lösen ist hier am sinnvollsten, wenn man nun all diese neuen Infos berücksichtigt?
Erinnerung an das Problem:
Fatal error: Unsupported operand types in ... user.module on line 2665
Es reicht wohl in user.modul ein if (!is_object(..)) { return; } einzubauen an der richtigen Stelle als Patch um zu verhindern, dass bei nicht verhandener uid trotzdem versucht wird, ein user-Objekt aufzubauen.
Wenn man so einen Patch macht aber ein Drush Makefile nutzt: Wie kann man mittels Drush Makefile ein nur lokal existierendes Patchfile anwenden (automatisiert, nicht manuell)?