Seite 1 von 1

Uncaught Error: Call to a member function start()

Verfasst: Fr 19. Apr 2024, 10:15
von Bernhard_4711
Moin,
ich bin vorgestern auf diesen Fehler gestoßen:

Code: Alles auswählen

[17-Apr-2024 08:42:34 UTC] PHP Fatal error:  Uncaught Error: Call to a member function start() on string in /var/www/btmr/contenido/classes/class.registry.php:711
Stack trace:
#0 /var/www/btmr/contenido/includes/frontend/include.front_content.php(85): cRegistry::bootstrap()
#1 /var/www/btmr/cms/front_content.php(43): include('...')
#2 {main}
  thrown in /var/www/btmr/contenido/classes/class.registry.php on line 711

Re: Uncaught Error: Call to a member function start()

Verfasst: Fr 19. Apr 2024, 16:13
von Oldperl
Servus,

bitte Bugreport- und Fragen-Howto beachten, dann kann man es besser nachvollziehen. Danke!
  • Neuinstallation oder Update?
  • Hat sich irgendetwas auf dem Server geändert?
  • Irgendetwas zu beachten um den Fehler nachzuvollziehen?
Gruß aus Franken

Ortwin

Re: Uncaught Error: Call to a member function start()

Verfasst: Sa 20. Apr 2024, 10:06
von Bernhard_4711
Ganz normaler Betrieb der "develop" vom 27.02.2024 ohne jegliche Änderungen.

Warte...
  • Apache 2.4.52
  • PHP 8.1.2
  • Maria DB 10.6.16

Re: Uncaught Error: Call to a member function start()

Verfasst: Sa 20. Apr 2024, 10:47
von xmurrix
Hallo Bernhard_4711,

vermutlich wird bei dir der Wert für 'auth' über GET, POST, COOKIE oder SESSION als String übergeben, das kann z. B. in einem Modul der Fall sein, auch möglich, dass die Seite mit einem 'auth' Parameter in der URL aufgerufen wird.

CONTENIDO übernimmt all die Werte aus den Superglobalen in den globalen Namensraum (siehe contenido/includes/globals_off.inc.php).

Ist also die globale Variable $auth gesetzt, wird sie in contenido/classes/class.registry.php:711 nicht überschrieben. Hier könnte man noch prüfen, ob es sich um ein Objekt handelt.

Mir wäre es lieber, dass wir von den globalen Variablen wegkommen, allerdings werden sie überall verwendet, auch in vielen Modulen und CONTENIDO-Installationen der Community, so dass der Weg in Richtung Entfernung der globalen Variablen in einem Chaos enden kann.

Schau mal bei dir nach, ob irgendwo in einem Modul der Wert für 'auth' gesetzt oder als URL-Parameter verwendet wird.

Ich kann dann einm Ticket in GitHub erstellen, damit die Stelle in der class.registry.php:711 etwas entschärft wird.

Gruß
Murat

Re: Uncaught Error: Call to a member function start()

Verfasst: Sa 20. Apr 2024, 11:17
von Bernhard_4711
Hallo Murat,
xmurrix hat geschrieben:
Sa 20. Apr 2024, 10:47
Schau mal bei dir nach, ob irgendwo in einem Modul der Wert für 'auth' gesetzt oder als URL-Parameter verwendet wird.
meinst Du in einem selbst erstellten Modul?

Re: Uncaught Error: Call to a member function start()

Verfasst: Sa 20. Apr 2024, 11:31
von xmurrix
Ich habe mir gerade die Module und die Plugins in CONTENIDO angesehen, in beiden Bereichen wird 'auth' so verwendet, dass es keine Probleme verursacht.
  • Das kann bei dir in einem selbsterstellten Modul oder in einem benutzerdefinierten Plugin sein der Fall sein
  • Möglich, dass 'auth' z. B. in einem Formular als Name für ein Feld verwendet wird, eventuell in einem Pifa-Formular
  • Es kann auch sein, dass es Anfragen mit dem URL-Parameter '&auth=irgendetwas' auf die Seite gibt, das müsste dann in den HTTP-Server Logs auftauchen
Das Ticket in GitHub zu diesem Problem ist:
https://github.com/CONTENIDO/CONTENIDO/issues/483

Re: Uncaught Error: Call to a member function start()

Verfasst: So 21. Apr 2024, 08:20
von emergence
hmm...

das tritt schon seit ewigen zeiten auf und kommt auch in der phplib schon vor...
der fix ist relativ simpel...

es liegt daran das auth als url parameter übergeben wird...

class.registry.php

public final static function bootstrap($features)

Code: Alles auswählen

if (!isset($auth)) {
ersetzen durch

Code: Alles auswählen

if (!isset ($auth) || !is_object($auth) || !method_exists($auth, "start")) {
und weil ich das gerade sehe, das selbe etwas weiter unten bei

Code: Alles auswählen

if (!isset($perm)) {
ersetzen durch

Code: Alles auswählen

if (!isset ($perm) || !is_object($perm)) {

Re: Uncaught Error: Call to a member function start()

Verfasst: So 21. Apr 2024, 12:25
von Bernhard_4711
Danke! Ändere ich nachher ab.

Re: Uncaught Error: Call to a member function start()

Verfasst: Mi 24. Apr 2024, 16:57
von emergence
eine kleine ergänzung...

es liegt daran das auth als url parameter übergeben wird und zwar wenn noch keine session initalisiert wurde...

Re: Uncaught Error: Call to a member function start()

Verfasst: Do 25. Apr 2024, 11:19
von Bernhard_4711
Ändert das etwas an den Code-Änderungen?

Re: Uncaught Error: Call to a member function start()

Verfasst: Fr 26. Apr 2024, 09:15
von emergence
nein... nur für den fall falls jemand den fehler nachstellen will...

Re: Uncaught Error: Call to a member function start()

Verfasst: Fr 26. Apr 2024, 10:19
von Bernhard_4711
Bis jetzt trat der Fehler auch nicht mehr auf! Und davor auch nur ein Mal... :wink: