Seite 1 von 1

Validator verhindert Aufruf des Backends

Verfasst: Fr 5. Jul 2024, 17:30
von bodil
Guten Abend zusammen,
ich habe ben ein Contenido-System aufgesetzt:
Version 4.10.2-DEV (gerade von GitHub geholt)
PHP 8.1
MYSQL 8.0
Nach dem Setup ist die Seite contenido/ nur leer.
Das Errorlog verrät:

Code: Alles auswählen

PHP Fatal error:  Uncaught TypeError: cRegistry::getConfigValue(): Argument #3 ($defaultValue) must be of type ?string, array given, called in [..]/contenido/classes/validator/class.validator.factory.php on line 78 and defined in [..]/contenido/classes/class.registry.php:574
Stack trace:
#0 [..]/contenido/classes/validator/class.validator.factory.php(78): cRegistry::getConfigValue('validator', 'email', Array)
#1 [..]/contenido/classes/class.password.request.php(144): cValidatorFactory::getInstance('email')
#2 [..]/contenido/main.loginform.php(85): cPasswordRequest->__construct(Object(cDb), Array)
#3 [..]/contenido/classes/auth/class.auth.handler.backend.php(75): include('/var/www/vhosts...')
#4 [..]/contenido/classes/auth/class.auth.php(327): cAuthHandlerBackend->displayLoginForm()
#5 [..]/contenido/classes/auth/class.auth.php(182): cAuth->_fetchLoginForm()
#6 [..]/contenido/classes/class.registry.php(790): cAuth->start()
#7 [..]/contenido/index.php(34): cRegistry::bootstrap(Array)
#8 {main}
  thrown in [..]/contenido/classes/class.registry.php on line 574
Sieht für mich so aus, als würde da eine E-Mail-Adresse validiert werden und als schlüge das fehl, weil statt der E-Mail-Adresse ein Array hinterlegt sei.
Kann mir da jemand weiterhelfen? Was wird da validiert? In der Conf finde ich nichts und in der DB steht nur die E-Mail, die ich als Admin-Kontakt während des Setups eingetragen habe. Stringförmig, wie auch sonst?
(Die nächste Frage wäre dann: warum verhindert eine nicht validierbare E-Mail-Adresse den Aufruf des Backends?)
Hat jemand eine Idee?
Immer dankbar!
Bodil

Re: Validator verhindert Aufruf des Backends

Verfasst: Sa 6. Jul 2024, 08:18
von xmurrix
Hallo Bodil,

es gab einen Fehler in der Datei class.registry.php, die habe ich gerade behoben, siehe Commit 487b227.

Der dritte Parameter der Funktion getConfigValue() darf nicht vom Typ string sein.

Da stand vorher folgendes:

Code: Alles auswählen

    public static function getConfigValue(
        string $sectionName = null,
        string $optionName = null,
        string $defaultValue = null
    )
Richtig ist:

Code: Alles auswählen

    public static function getConfigValue(
        string $sectionName = null,
        string $optionName = null,
        $defaultValue = null
    )
Da ich die ganze Zeit an einer anderen Branch arbeite, ist mir das bisher nicht aufgefallen. Danke dir für den Hinweis.

Gruß
xmurrix

Re: Validator verhindert Aufruf des Backends

Verfasst: Sa 6. Jul 2024, 09:16
von bodil
Und schon geht’s! Vielen Dank!
B.