Folgendes Szenario:- Contao 3.2.4 Installation (passiert wohl in Contao 3.x, evt. auch in Contao 2.x)
- syncCto Extension installiert
- Datenbank geht "verloren", Zugang oder Server Adresse ändert sich etc.
- Man möchte die install.php aufrufen, um die neue Datenbank Verbindung zu konfigurieren bzw. um die Datenbank wieder mit den Tables zu befüllen, damit man wieder das Backend aufrufen und bspw. über syncCto ein Backup einspielen kann
Die install.php kann in so einem Szenario aber nicht aufgerufen werden, man bekommt dabei folgende Fehler:
Code:
Warning: mysqli::mysqli(): (HY000/1049): Unknown database 'foo' in [...]\system\modules\core\library\Contao\Database\Mysqli.php on line 47
#0 [internal function]: __error(2, 'mysqli::mysqli(...', 'C:\xampp\htdocs...', 47, Array)
#1 [...]\system\modules\core\library\Contao\Database\Mysqli.php(47): mysqli->mysqli('localhost', 'foo', 'foo', 'foo', 3306, '')
#2 [...]\system\modules\core\library\Contao\Database.php(77): Contao\Database\Mysqli->connect()
#3 [...]\system\modules\core\library\Contao\Database.php(160): Contao\Database->__construct(Array)
#4 [internal function]: Contao\Database::getInstance()
#5 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
#6 [...]\system\modules\core\classes\Backend.php(37): Contao\System->import('Database')
#7 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(96): Contao\Backend->__construct()
#8 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(130): CtoCommunication->__construct()
#9 [internal function]: CtoCommunication::getInstance()
#10 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
#11 [...]\system\modules\core\classes\BackendTemplate.php(44): Contao\System->import('CtoCommunicatio...')
#12 [...]\system\modules\core\classes\BackendTemplate.php(149): Contao\BackendTemplate->parse()
#13 [...]\contao\install.php(827): Contao\BackendTemplate->output()
#14 [...]\contao\install.php(131): InstallTool->outputAndExit()
#15 [...]\contao\install.php(1093): InstallTool->run()
#16 {main}
Fatal error: Uncaught exception Exception with message Unknown database 'foo' thrown in [...]\system\modules\core\library\Contao\Database\Mysqli.php on line 51
#0 [...]\system\modules\core\library\Contao\Database.php(77): Contao\Database\Mysqli->connect()
#1 [...]\system\modules\core\library\Contao\Database.php(160): Contao\Database->__construct(Array)
#2 [internal function]: Contao\Database::getInstance()
#3 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
#4 [...]\system\modules\core\classes\Backend.php(37): Contao\System->import('Database')
#5 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(96): Contao\Backend->__construct()
#6 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(130): CtoCommunication->__construct()
#7 [internal function]: CtoCommunication::getInstance()
#8 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
#9 [...]\system\modules\core\classes\BackendTemplate.php(44): Contao\System->import('CtoCommunicatio...')
#10 [...]\system\modules\core\classes\BackendTemplate.php(149): Contao\BackendTemplate->parse()
#11 [...]\contao\install.php(827): Contao\BackendTemplate->output()
#12 [...]\contao\install.php(131): InstallTool->outputAndExit()
#13 [...]\contao\install.php(1093): InstallTool->run()
#14 {main}
Wenn man dadurch auf die Idee kommt die localconfig.php zu löschen (damit keine Informationen über die Datenbankverbindung vorhanden sind), bekommt man beim Aufruf der install.php aber folgenden Fehler:
Code:
Fatal error: Class 'Database\' not found in [...]\system\modules\core\library\Contao\Database.php on line 160
Um doch wieder in das Install Tool zu gelangen muss man folgende Extensions deaktivieren1:
Ist das so "vorgesehen" bzw. lässt sich das nicht verbessern? Sollte das Install Tool nicht im Notfall auf jeden Fall aufgerufen werden können? Oder ist dies eher ein Problem von Contao selbst und nicht unbedingt ein Problem der Extension syncCto.
1 Also in den Ordnern system/modules/ctoCommunication und system/modules/syncCto eine Datei namens ".skip" erstellen