UMGT 2.0: Login ist zur Zeit nicht möglich

Anmerkungen, Fragen und Hinweise zur Konfiguration dürfen in diesem Forum gepostet werden. // Notes, questions, and hints on the configuration can be posted here.
Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 02.12.2013, 11:41:53

Hallo,

ich habe mittels der Sandbox den UMGT eingerichtet und diverse Testnutzer angelegt. Auf meiner Seite habe ich den Login (login.html) wie folgt eingebunden:

Code: Alles auswählen

<h1>Login</h1>

<core:importdesign
    namespace="APF\modules\usermanagement\pres\templates\login"
    template="login"
/> 
Versuche ich nun, einen der Testnutzer anzumelden, erhalte ich folgende Ausgabe:

Code: Alles auswählen

Login ist zur Zeit nicht möglich. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal.
Und zusätzlich folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Uncaught exception 'APF\core\logging\LoggerException' with message 'Log writer with name "login" is not registered!' in /var/www/APF/core/logging/Logger.php:236 Stack trace: #0 /var/www/APF/core/logging/Logger.php(329): APF\core\logging\Logger->getLogWriter('login') #1 /var/www/APF/core/bootstrap.php(109): APF\core\logging\Logger->flushLogBuffer() #2 [internal function]: {closure}() #3 {main} thrown in /var/www/APF/core/logging/Logger.php on line 236 
In der Sandbox können sich hingegen alle Benutzer problemlos anmelden.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 02.12.2013, 12:16:11

Hallo ma2604121,

ich vermute einen ähnlichen Fehler wie unter viewtopic.php?f=2&t=5227 bereits vermutet. Schalte mal den Error- und Exception-Handler ab und schau mal welche Meldung wirklich die Ursache ist. Evtl. hilft dir auch ein Debugger.
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 02.12.2013, 15:34:50

dr.e. hat geschrieben:Schalte mal den Error- und Exception-Handler ab und schau mal welche Meldung wirklich die Ursache ist. Evtl. hilft dir auch ein Debugger.
Wie bzw. wo muss ich das in diesem Fall machen?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 02.12.2013, 23:49:23

Die Doku sagt hierzu, dass du das Abschalten in deiner Bootstrap-Datei (=zumeist index.php) erledigen kannst - nach dem Einbinden der bootstrap.php (APF 2.0) bzw. pagecontroller.php (APF 1.17).
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 10:31:21

Also wie folgt:

Code: Alles auswählen

<?php
include('../APF/core/bootstrap.php');

// Deaktivieren der APF Exception-Behandlung 
GlobalExceptionHandler::disable(); 
Damit erhalte ich dann aber folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Class 'GlobalExceptionHandler' not found in /var/www/auto/index.php on line 10 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 03.12.2013, 13:52:45

Hallo ma2604121,

ab dem APF 2.0 werden konsequent Namespaces benutzt. Daher musst du bei Verwendung der Klasse GlobalExceptionHandler ein use einfügen. Andernfalls kann der Class-Loader diese nicht finden.
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 14:00:00

Danke! Manchmal stolpere ich bei der Doku ein wenig.

Ich habe das nun entsprechend umgesetzt.

Code: Alles auswählen

// Deaktivieren der APF Exception-Behandlung 
use APFcoreexceptionhandlerGlobalExceptionHandler; 
GlobalExceptionHandler::disable();

// Deaktivieren der APF Fehlerbehandlung 
use APFcoreerrorhandlerGlobalErrorHandler;
GlobalErrorHandler::disable(); 
Aber mehr Infos bzgl. der Fehlerursache erhalte ich dennoch nicht.

Code: Alles auswählen

Fatal error: Uncaught exception 'APF\core\logging\LoggerException' with message 'Log writer with name "login" is not registered!' in /var/www/APF/core/logging/Logger.php:236 Stack trace: #0 /var/www/APF/core/logging/Logger.php(329): APF\core\logging\Logger->getLogWriter('login') #1 /var/www/APF/core/bootstrap.php(109): APF\core\logging\Logger->flushLogBuffer() #2 [internal function]: {closure}() #3 {main} thrown in /var/www/APF/core/logging/Logger.php on line 236 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 03.12.2013, 14:32:46

Hi,

sehr schön, dann haben wir nun die Ursache. Schau dir mal die Migrationsdoku zu 1.17 und http://adventure-php-framework.org/Seit ... LogWritern an. Für das UMGT Modul bedarf es eines eigenen Loggers, der die Events in einem eigenen Log speichert.
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 14:58:06

So, habe nun das Migrationsscript ausgeführt, wie im Wiki beschrieben. Aber ist das wirklich notwendig, wenn ich noch nie APF 1.17 installiert hatte, sondern direkt APF 2.0 heruntergeladen und installiert habe? Da sollte doch von Haus aus alles korrekt initialisiert sein?

Code: Alles auswählen

admin@merkur:/var/www/APF$ ./migration/migrate.sh 
######################################
# APF 2.0 automatic migration        #
######################################

Checking directory ... [OK]
Checking PHP executable available ... [OK]
PHP executable found.

######################################

Starting migration ...
* Introduced namespace declarations ...
* Switched from import() to use ...
* Migrated PHPDoc comments ...
* Migrated declaration and usage of tags ...
* Migrated service calls and di-service configuration ...
* Migrated registry calls ...
* Migrated session(manager) calls ...
* Add missing use statements ...
* Migrated Singleton/SessionSingleton calls ...
* Migrated configuration files:
  * Config calls
  * Database configuration
  * Cache configuration
  * Front controller configuration
  * GORM configuration
  * Pager configuration
  * UMGT module configuration
  * Contact module configuration

######################################

Migration done! Please check your code and follow instructions within migration documentation!
Das ist also problemlos durchgelaufen. Manuelle Anpassungen waren in der Folge größtenteils nicht mehr notwendig, da ich meine index.php bereits nach der Doku und somit nach APF 2.0 Standard aufgebaut hatte.

Sie sieht nun wie folgt aus:

Code: Alles auswählen

<?php
include('../APF/core/bootstrap.php');

// Deaktivieren der APF Exception-Behandlung 
use APFcoreexceptionhandlerGlobalExceptionHandler; 
#GlobalExceptionHandler::disable();
GlobalExceptionHandler::enable();

// Deaktivieren der APF Fehlerbehandlung 
use APFcoreerrorhandlerGlobalErrorHandler;
#GlobalErrorHandler::disable();
GlobalErrorHandler::enable();

use APFcoreloaderRootClassLoader;
use APFcoreloaderStandardClassLoader;

$classLoader = new StandardClassLoader('AUTO','../auto');
RootClassLoader::addLoader($classLoader);

use APFcoresingletonSingleton;
use APFcorefrontcontrollerFrontcontroller;

use APFcoreloggingLogger;
$logger = &Singleton::getInstance('APF\core\logging\Logger'); 
use APFcoreloggingwriterStdOutLogWriter;
$logger->addLogWriter( 'login', new StdOutLogWriter() );

$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
echo $fC->start('AUTO\templates','main');
?>
Wenn ich die vorherige Fehlermeldung richtig sehe, ist der Logger namens "login" nicht registriert. Das habe ich nun versucht umzusetzen, erhalte dafür aber folgende Fehlermeldungen:

Code: Alles auswählen

[login] [2013-12-03 13:53:21] [ERROR] Login is not possible due to exception 'APF\core\configuration\ConfigurationException' with message '[IniConfigurationProvider::loadConfiguration()] Configuration with namespace "APF\modules\usermanagement\biz", context "AUTO\templates", language "de", environment "DEFAULT", and name "serviceobjects.ini" cannot be loaded (file name: /var/www/APF/config/modules/usermanagement/biz/AUTO/templates/DEFAULT_serviceobjects.ini)!' in /var/www/APF/core/configuration/provider/ini/IniConfigurationProvider.php:81 Stack trace: #0 /var/www/APF/core/configuration/ConfigurationManager.php(338): APF\core\configuration\provider\ini\IniConfigurationProvider->loadConfiguration('APF\modules\use...', 'AUTO\templates', 'de', 'DEFAULT', 'serviceobjects....') #1 /var/www/APF/core/service/DIServiceManager.php(351): APF\core\configuration\ConfigurationManager::loadConfiguration('APF\modules\use...', 'AUTO\templates', 'de', 'DEFAULT', 'serviceobjects....') #2 /var/www/APF/core/service/DIServiceManager.php(151): APF\core\service\DIServiceManager::getServiceConfiguration('APF\modules\use...', 'UmgtManager', 'AUTO\templates', 'de', 'APF\modules\use...') #3 /var/www/APF/core/pagecontroller/pagecontroller.php(532): APF\core\service\DIServiceManager::getServiceObject('APF\modules\use...', 'UmgtManager', 'AUTO\templates', 'de') #4 /var/www/APF/modules/usermanagement/pres/documentcontroller/login/LoginController.php(138): APF\core\pagecontroller\APFObject->getDIServiceObject('APF\modules\use...', 'UmgtManager') #5 /var/www/APF/modules/usermanagement/pres/documentcontroller/login/LoginController.php(78): APF\modules\usermanagement\pres\documentcontroller\login\LoginController->loadUser('user', 'password') #6 /var/www/APF/core/pagecontroller/pagecontroller.php(1737): APF\modules\usermanagement\pres\documentcontroller\login\LoginController->transformContent() #7 /var/www/APF/core/pagecontroller/pagecontroller.php(1748): APF\core\pagecontroller\Document->transform() #8 /var/www/APF/core/pagecontroller/pagecontroller.php(1748): APF\core\pagecontroller\Document->transform() #9 /var/www/APF/core/pagecontroller/pagecontroller.php(1748): APF\core\pagecontroller\Document->transform() #10 /var/www/APF/core/pagecontroller/pagecontroller.php(858): APF\core\pagecontroller\Document->transform() #11 /var/www/APF/core/frontcontroller/Frontcontroller.php(512): APF\core\pagecontroller\Page->transform() #12 /var/www/auto/index.php(29): APF\core\frontcontroller\Frontcontroller->start('AUTO\templates', 'main') #13 {main} 
Irgendwie stehe ich auf dem Schlauch...

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 16:23:11

Es läuft!!

Ich musste alle Config-Ordner neu erstellen. Das ist wahrscheinlich auch korrekt so. Aber auch hier war immer der {CONTEXT}-Ordner zu erstellen und in diesem wiederum der Unterordner templates, in welchem dann die Config-Dateien liegen müssen.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 03.12.2013, 18:08:17

Hallo ma2604121,

ich habe mir mal den Code und deine Exception-Message oben angesehen und der Ordner "templates" ist erforderlich, da du den Context auf den Wert "AUTO\templates" gesetzt hast. Siehe

Code: Alles auswählen

context "AUTO\templates"
Sofern du diesen "nur" auf "AUTO" setzt wirst du das gewünschte Verhalten vorfinden.
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 18:47:14

Und wo genau habe ich diesen Fehler gemacht? Ich habe mich nochmal in der Doku umgeschaut, aber ganz sicher bin ich mir nicht.

In der index.php?

Code: Alles auswählen

echo $fC->start('AUTO\templates','main'); 
An anderer Stelle kann es fast nicht sein.

Diese Anweisung habe ich bisher allerdings so verstanden, dass hier der Ordner angegeben wird, in welchem das Template main.html zu finden ist.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 03.12.2013, 19:25:15

Hallo ma2604121,

doch, diese Stelle ist es leider! ;)

Der Front-Controller versucht hier bei fehlendem Context mit dem Namespace zu arbeiten (siehe Frontcontroller.php:484). Um den Kontext zu setzen, ist ein explizites

Code: Alles auswählen

$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
$fC->setContext('...'); 
notwendig (siehe z.B. http://adventure-php-framework.org/Seit ... ons-Schema).
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von ma2604121 » 03.12.2013, 20:30:46

Es bleibt mir immer noch unklar.

Ich hatte mich hieran orientiert: http://adventure-php-framework.org/Seit ... -Templates

Code: Alles auswählen

$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
echo $fC->start('PAGE\templates', 'main'); 
Hier erfolgt der Aufruf wie in meiner erstellten index.php. Auch hier wird kein expliziter Context mittels $fC->setContext('...'); gesetzt. Müsste dann in diesem Beispiel nicht auch die Config in z.B. \PAGE\templates\DEFAULT_config.ini abgelegt werden?

Und wie ist es korrekt umzusetzen?

Code: Alles auswählen

$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
$fC->setContext('auto');
echo $fC->start('templates','main');
 
So jedenfalls funktioniert es nicht:

Code: Alles auswählen

Type:
    APF\core\pagecontroller\IncludeException 
Message:
    [APF\core\pagecontroller\Document::loadContentFromFile()] Template "main" not existent in namespace "templates"! 
Number:
    256 
File:
    /var/www/APF/core/pagecontroller/pagecontroller.php 
Line:
    1353 

Benutzeravatar
dr.e.
Administrator
Beiträge: 4537
Registriert: 04.11.2007, 16:13:53

Re: UMGT 2.0: Login ist zur Zeit nicht möglich

Beitrag von dr.e. » 03.12.2013, 20:37:20

Hallo ma2604121,

die Lösung ist:

Code: Alles auswählen

$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
$fC->setContext('something-specific-to-your-use-case');
echo $fC->start('AUTO\templates', 'main'); 
Namespace und Context haben zunächst nichts miteinander zu tun. Der Kontext wird dazu genutzt, deine Applikation für einen bestimmten Anwendungsfall zu konfigurieren (z.B. du nutzt das selbe Modul für mehrere Webseiten) - siehe http://adventure-php-framework.org/Seit ... ons-Schema. Sofern du das nicht brauchst, kannst du das Verhalten auch für den entsprechenden ConfigurationProvider ausschalten (siehe http://adventure-php-framework.org/Seit ... mitContext).

Hoffe das hilft dir weiter!
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast