WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Beim Update von 2.8.1 sp3 erhalte ich folgende Fehlermeldung:
This script upgrades WB-Classic v2.8.3 (REV: 1638, SP: SP1) to WBCE vNEW_WBCE_VERSION (NEW_WBCE_TAG) .
The upgrade script modifies the existing database to reflect the changes introduced with the new version.
Step 1 : Updating database entriesAdding default_theme to settings table
Fatal error: Class 'Settings' not found in /***/upgrade-script.php on line 366
Was kann ich tun?
Beitrag geändert von berny (15.02.2017 13:21:50)
Offline
Kannst Du mal schauen, was für eine PHP-Version dort läuft?
Dafür z.B. Datei phpinfo.php mit dem Inhalt
<?php phpinfo(); ?>
anlegen und im Browser aufrufen.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Ansich die 5.4...
hätte noch 5.5 zur Auswahl..
Offline
Kannst Du mal auf 5.5 hochdrehen und es dann nochmal versuchen? Ich habe gerade versucht, das Problem mit WB 2.8.3 SP1 und PHP 5.5 nachzustellen, da ist das Upgradescript aber ganz normal durchgelaufen.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
nein, das gleiche Problem....
admin-ordner ist ein andere, daran liegts nicht, hoffe ich...
Sind ev Datein nicht richtig übernommen worden? Wie kann ich das einfach feststellen (Version.php oder so?
Offline
Hm, auch mit umbenanntem Admin-Verzeichnis nicht reproduzierbar...
- hast Du die Dateien aus dem Update-Paket in Dein umbenanntes Admin-Verzeichnis kopiert?
- Sind noch andere Verzeichnisse anders benannt (include, framework)?
- Gibt es eine .htaccess und wenn ja, ist dort irgend eine Weiterleitung drin?
- Stimmen die Angabe WB_URL und ADMIN_DIRECTORY mit den tatsächlichen Begebenheiten überein?
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Bei genauerem Hinsehen (wer lesen kann etc. ) fällt mir auf:
Das
This script upgrades WB-Classic v2.8.3 (REV: 1638, SP: SP1) to WBCE vNEW_WBCE_VERSION (NEW_WBCE_TAG) .
sollte da so nicht stehen, da muss
This script upgrades WB-Classic v2.8.3 (REV: 1638, SP: SP1) to WBCE v1.1.11
stehen.
D.h. der Grund ist das umbenannte Admin-Verzeichnis.
Benenne bitte das "alte" Adminverzeichnis, nehmen wir an, es heißt "blablub", irgendwie anders um, z.B. "blablub_alt", benenne dann das hochgeladene Verzeichnis "admin" in "blablub" (also den alten Namen) um und starte dann nochmal das Upgradescript.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
This script upgrades WB-Classic v2.8.3 (REV: 1638, SP: SP1) to WBCE v1.1.11 (1.1.11) .
The upgrade script modifies the existing database to reflect the changes introduced with the new version.
Step 1 : Updating database entriesAdding default_theme to settings table
Fatal error: Class 'Settings' not found in /****/upgrade-script.php on line 366
Version steht da jetzt, aber leider keine Änderung.
WBCE ist in einem Unterverzeichnis
Im Webroot gibt es eine htacces mit Weiterleitung in dieses Unterverzeichnis.
Was eigenartig ist, er kennt diese class nicht..sprich php Problem?
Beitrag geändert von berny (15.02.2017 14:48:46)
Offline
Die Class Settings wird in der /framework/class.settings.php definiert. Kannst Du bitte mal prüfen, ob diese bei Dir vorhanden ist und wie groß die ist. Sollte so um die 5 Kb haben.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
<?php
/*
Simple static Class for handling settings in Core and Modules
All setting names may only contain a-z 0-9 and "_"
Core Settings are prepended by "wb_". (e.g. wb_maintainance_mode)
Module settings are prepended by module name or maybe by a shortened form of the module name
(e.g. wysi_my_setting for wysiwyg)
Please keep in mind that WB stores settings only as strings.
Copyright Norbert Heimsath
License GPLv2 or any later
*/
class Settings {
// sets or overwrites a config setting
public static function Set($name, $value, $overwrite=true) {
global $database;
//Make sure we only got 'a-zA-Z0-9_'
if (!preg_match("/[a-zA-Z0-9\-]+/u", $name)) return "Name only may contain 'a-zA-Z0-9_'";
$name = strtolower($name);
// need to make sure , we only store a string
if (is_array($value)) return "Arrays can't be stored in constants";
if (is_object($value)) return "Objects can't be stored in constants";
if (is_resource($value)) return "Resources can't be stored in constants";
if (is_bool($value)) $value = $value ? 'true' : 'false';
//elseif (is_string($value)) $value = $value;
//else $value="$value";
// Not needed as Type juggling is done in sql composing
// Already set ? Database always returns a string here not a boolean.
$prev_value = Settings::Get($name, false);
// echo "value=".$value."<br>";
// better go for savety
$name = $database->escapeString($name);
$value = $database->escapeString($value);
// If its a boolean there was nothing set.
if($prev_value === false) {
$sql="INSERT INTO ".TABLE_PREFIX."settings (name,value) VALUES ('$name','$value')";
$database->query($sql);
} else {
// stop here if overwrite is false
if ($overwrite===false) return "Setting already exists, overwrite forbidden";
$sql="UPDATE ".TABLE_PREFIX."settings SET value = '$value' WHERE name = '$name'";
//echo htmlentities( $sql);
$database->query($sql);
}
return false;
}
// only used as helper, as all setings converted to constants
public static function Get($name, $default= false) {
global $database;
$sql="SELECT value FROM ".TABLE_PREFIX."settings WHERE name = '".$name."'";
$rs = $database->query($sql);
if($row = $rs->fetchRow()) return $row['value'];
return $default;
}
public static function Del($name) {
global $database;
// is it set ?
$prev_value = Settings::get($name);
if($prev_value === false) {
return "Setting not set";
}
else {
$sql="DELETE FROM ".TABLE_PREFIX."settings WHERE name = '$name'";
$database->query($sql);
}
return false;
}
// function to setup constants in init
public static function Setup() {
global $database;
// Get website settings (title, keywords, description, header, footer...)
$sql = 'SELECT `name`, `value` FROM `' . TABLE_PREFIX . 'settings`';
if (($get_settings = $database->query($sql))) {
$x = 0; //counter for debug
while ($setting = $get_settings->fetchRow(MYSQL_ASSOC)) {
$setting_name = strtoupper($setting['name']);
$setting_value = $setting['value'];
if ($setting_value == 'false') {
$setting_value = false;
}
if ($setting_value == 'true') {
$setting_value = true;
}
if (!defined($setting_name)) //already set manually in config ?
define($setting_name, $setting_value);
$x++;
}
}
else {
die($database->get_error());
}
return false;
}
// a function to display all settings in DB same as setup but returns a nice list
public static function Info() {
global $database;
$sql = 'SELECT `name`, `value` FROM `' . TABLE_PREFIX . 'settings`';
if (($get_settings = $database->query($sql))) {
$out = "<h3>All Settings in DB</h3>";
while ($setting = $get_settings->fetchRow(MYSQL_ASSOC)) {
$setting_name = strtoupper($setting['name']);
$setting_value = $setting['value'];
$setting_value = htmlentities($setting_value);
$out.= "$setting_name = $setting_value <br />";
}
}
else {
die($database->get_error());
}
return $out;
}
}
Das ist sie....
Offline
Okay, sieht so weit korrekt aus.
Liegt das Upgradescript im selben Verzeichnis wie die config.php?
Stimmen die Angaben WB_URL und ADMIN_DIRECTORY darin mit den tatsächlichen Begebenheiten überein?
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Ansich ja...
wb url ohne nachlaufenden /
Der wb läuft ja, nur das updatescript eben nicht....
könnte es sein, dass die Datein einfach nicht überschrieben werden?
Wie kann ich das eben testen bzw in welcher Datei könnte ich da nachgucken, ob es die neue oder alte ist?
Die Datumsangaben sind neuer als die alten.....
Offline
Ganz konkret. Ist in der config.php eine Zeile
define('ADMIN_DIRECTORY', '####');
#### = dein Adminverzeichnis?
Ansonsten schieb nochmal alles in /framework hoch
Oder lass mir mal FTP-ZUgangsdaten per PM zukommen, dann schaue ich mal, ob mir irgendwas auf-/einfällt.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
die Admin ist richtig angegeben...
Ich hab das Verzeichnis auch auf admin umbenannt und die config geändert, auch das gleiche Ergebnis.
Interessant ist jetzt, wenn ich in das admin-Verzeichnis gehe, werde ich automatisch auf das Update script geleitet....
Umbenannt auf das andere Vezeichnis, detto...
Offline
Die Weiterleitung auf das upgradescript ist normal und beabsichtigt.
Sorry, ich steige hier aus, habe keine Ahnung, woran es jetzt noch liegen könnte. Vielleicht fällt norhei oder cwsoft was dazu ein, die sind aber nicht 24/7 im Forum.
Edit: Ursache gefunden und behoben, die Inhalte des /framework-Verzeichnisses waren nicht überschrieben worden.
Beitrag geändert von florian (15.02.2017 16:49:41)
Code allein macht nicht glücklich. Jetzt spenden!
Offline
OK, Danke florian
Ich weiß noch nicht, warum diese Datein offensichtlich nicht überschrieben wurden, jedoch funktioniert es derzeit.
muss noch ein paar kleine Fehler beheben, aber sonst passt es.
Offline
florian