Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: BUG: Configuration kann bei Datenbankfehler nicht gelesen werden

    webald

    • modified Team
    • Beiträge: 2.791
    Bei einem Datenbankfehler können die Config-Daten u. U. nicht aus der Tabelle configuration gelesen werden (etwa mysql-Server ist down). Es können daher auch keine Meldungen an den Admin verschickt werden, da diese Daten ja in der Tabelle configuration stehen (z. B. auch die Mail-Serverdaten).

    In der /admin/configuration.php die aktuelle Config in eine Backup-Datei schreiben

    Code: PHP  [Auswählen]
            // Save Config to file - 2015-01-23, webald
    chmod(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php',0644);
    unlink(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php');
    $fp=fopen(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php','a');
    $configuration_query = xtc_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from '.TABLE_CONFIGURATION);
    while ($configuration = xtc_db_fetch_array($configuration_query)) {
            fwrite($fp,"if(!defined(".$configuration['cfgKey'].")){");
            fwrite($fp,"define(".$configuration['cfgKey'].", ".stripslashes($configuration['cfgValue']).");");
            fwrite($fp,"}");
            fwrite($fp,"\r\n");
            }
    fclose($fp);
    chmod(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php',0444);

    und dann in xtc_db_error.inc.php etwas wie

    Code: PHP  [Auswählen]
    include_once(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php');

    einfügen, womit die notwendigen Daten für den Info-Versand an den Admin zur Verfügung stünden.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=32054.0

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Ist doch von dir auch bereits in Ticket #357 festgehalten. ;-)

    Grüße

    Torsten

    webald

    • modified Team
    • Beiträge: 2.791
    Die Lösung dort prüft aber nicht ob die Konstanten schon defniert wurden und es fehlt dort mal wieder ein Semikolon.

    Und weil wir gerade dabei sind - application_top.php => xtc_db_connect.inc.php:
    In application_top.php steht
    Code: PHP  [Auswählen]
    xtc_db_connect() or die('Unable to connect to database server!');
    Bei DB-Server down kann diese Fehlermeldung nicht kommen, da in xtc_db_connect.inc.php:
    Code: PHP  [Auswählen]
       // BOF - Dokuman - 2010-11-23 - revised database connection for error reporting
        if ($$link) {
          if (!@mysql_select_db($database, $$link)) {
            xtc_db_error('', mysql_errno($$link), mysql_error($$link));
            die();
          }
        } else {
          xtc_db_error('', mysql_errno(), mysql_error());
          die();  //  <=  Keine Fehlermeldung
        }
        // EOF - Dokuman - 2010-11-23 - revised database connection for error reporting
    Aber zu "die()" in der Datei kommt man auch nicht, da in xtc_db_error.inc.php auch schon gestorben wird (selbst wenn die Meldung an den Admin raus ist):
    Code: PHP  [Auswählen]
          die('<font color="#ff0000"><strong>Es ist ein Fehler aufgetreten!<br />There was an error!<br />Il y avait une erreur!</strong></font>');

    Kann man einfach reproduzieren. Einfach in der Testumgebung den mysql-Server ausschalten.
    2 Antworten
    2688 Aufrufe
    20. Juni 2010, 12:27:32 von jannemann
    2 Antworten
    3970 Aufrufe
    12. Oktober 2016, 08:13:28 von maikl