#2401 closed Bug/Fehler (fixed)
Datenbankwiederherstellung bei PHP 8 nicht möglich
| Reported by: | oneQ | Owned by: | somebody |
|---|---|---|---|
| Priority: | hoch | Milestone: | modified-shop-2.0.8.0 |
| Component: | Admin | Version: | 2.0.7.2 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description (last modified by )
Wiederherstellung bleibt bei der Tabelle configuration hängen.
Siehe auch Forum modified eCommerce Shopsoftware 2.0.7.2 rev 14622 veröffentlicht
Attachments (0)
Change History (10)
comment:1 by , 3 years ago
comment:2 by , 3 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 3 years ago
Eine mögliche Lösung hat noRiddle hier veröffentlicht: modified eCommerce Shopsoftware 2.0.7.2 rev 14622 veröffentlicht
comment:4 by , 3 years ago
In modified eCommerce Shopsoftware 2.0.7.2 rev 14622 veröffentlicht | Antwort #138 habe ich noch Gründe aufgeführt die application_top.php in die backup_restore.php zu includieren, weil es ansonsten in Erweiterungen (mittels auto_include()) zu Errors und Warnings kommen kann.
Gruß,
noRiddle
comment:5 by , 3 years ago
Bei einem Restore wird nur in der Session ein auto_include greifen um andere Sessionhandler zu ermöglichen. Erweiterungen müssen hier sauber probgrammiert sein.
Das Ticket wird wie folget gelöst:
if (defined('DELETE_GUEST_ACCOUNT') && DELETE_GUEST_ACCOUNT == 'true') {
comment:7 by , 3 years ago
Nehmen wir an ich habe ein Sprachfile in /lang/SPRACHE/extra/admin/ welches z.B. $PHP_SELF benutzt oder die Funktion xtc_href_link(). Dieses Sprach-File ist für irgendeine Erweiterung.
Da die /admin/backup_restore.php die /admin/includes/head.php includiert ist das genannte Sprach-File ebenfalls includiert und schon kommt es zu "undefine variable" oder "undefined function". Damit rechnet man jedoch nicht und ich hab's jetzt zufällig entdeckt weil ich das Restore mal testen wollte, welches ich normalerweise nicht benutze.
Mit "Erweiterungen müssen hier sauber programmiert sein." meinst du dann wohl, daß man in solchen Sprach-Files wie dem aufgeführten in einer if-Condition die betroffene Seite abfragt ?
Also z.B.
if(basename($_SERVER['SCRIPT_NAME']) == 'categories.php' && isset($_GET['action']) && $_GET['action'] == 'new_product') {
define(WAS_WEISS_ICH; 'blablabla');
}
Wie gesagt, damit rechnet man nicht, weil im allgemeinen die application_top.php überall im Backend zur Verfügung steht.
Gruß,
noRiddle
comment:8 by , 3 years ago
In der head.php werden nur 2 auto_include ausgeführt und die header.php wird nicht includiert.
DIR_FS_ADMIN.'includes/extra/css/' DIR_FS_ADMIN.'includes/extra/javascript/'
Beide finde ich an der Stelle unkritisch.
comment:9 by , 3 years ago
Weiß nicht mehr wie ich auf die head.php gekommen bin (mache zu viele Sachen parallel, ächz).
Was ich meine ist diese Zeile in der backup_restore.php:
require(DIR_FS_LANGUAGES . $_SESSION['language'] . '/admin/'.$_SESSION['language'] . '.php');
Dadurch werden ja auch alle "/lang/SPRACHE/extra/admin/"-Files automatisch includiert und dann kann es zu dem Genannten kommen.
Man muß es halt nur wissen und wohl am besten den Code in if-Conditions packen, wie ich es beschrieben habe. Hätte auch den Vorteil, daß weniger geladen wird wo es nicht nötig ist.
Gruß,
noRiddle

DB: MySQL 10.5.16
PHP Version: 8.1.7
Wenn man nur von der Tabelle configuration ein Backup macht und wiederherstellt, das gleiche Ergebnis.