WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 15.02.2017 13:19:36

berny
Mitglied

Update - Class 'Settings' not found

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 entries

Adding 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

#2 15.02.2017 13:25:56

florian
Administrator

Re: Update - Class 'Settings' not found

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

#3 15.02.2017 13:39:12

berny
Mitglied

Re: Update - Class 'Settings' not found

Ansich die 5.4...
hätte noch 5.5 zur Auswahl..

Offline

#4 15.02.2017 13:42:03

florian
Administrator

Re: Update - Class 'Settings' not found

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

#5 15.02.2017 13:44:40

berny
Mitglied

Re: Update - Class 'Settings' not found

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

#6 15.02.2017 13:54:57

florian
Administrator

Re: Update - Class 'Settings' not found

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

#7 15.02.2017 14:12:45

florian
Administrator

Re: Update - Class 'Settings' not found

Bei genauerem Hinsehen (wer lesen kann etc. ops ) 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

#8 15.02.2017 14:46:24

berny
Mitglied

Re: Update - Class 'Settings' not found

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 entries

Adding 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

#9 15.02.2017 14:50:30

florian
Administrator

Re: Update - Class 'Settings' not found

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

#10 15.02.2017 14:53:48

berny
Mitglied

Re: Update - Class 'Settings' not found

<?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

#11 15.02.2017 14:58:22

florian
Administrator

Re: Update - Class 'Settings' not found

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

#12 15.02.2017 15:02:40

berny
Mitglied

Re: Update - Class 'Settings' not found

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

#13 15.02.2017 15:07:41

florian
Administrator

Re: Update - Class 'Settings' not found

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

#14 15.02.2017 15:22:04

berny
Mitglied

Re: Update - Class 'Settings' not found

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

#15 15.02.2017 15:27:10

florian
Administrator

Re: Update - Class 'Settings' not found

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

#16 15.02.2017 16:48:21

berny
Mitglied

Re: Update - Class 'Settings' not found

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

Liked by:

florian

Fußzeile des Forums

up