Speicherplatzbeschränkung wird nicht angezeigt unter Webseiten

#1
Hallo Leute, hallo Till,
ich hab schon in diesem anderen [Thread] versucht das Problem zu klären, es kam aber leider nicht zur Lösung - nun mache ich ein eigenes Thema dazu auf, da ich nun alle Server auf p8 geupdatet habe und mir dieses Problem erneut ins Auge stochen ist .

Ich hatte dieses Problem gefixt indem ich in der lib/classes/tpl.inc.php:~974 in Funktion _arrayBuild() diese Zeile auskommentiert habe:
Code:
//if(!is_array($arr[$i])) return false;
Auch jetzt nach dem Patch musste ich das wieder auskommentieren, damit alle Daten unter Speicherplatzbeschränkung angezeigt werden. Damit das nicht zur ollen Gewohnheit wird möchte ich diesem Problem jetzt mal auf den Grund gehen und habe die Zeile wieder einkommentiert:

Code:
repquota -avugs
auf allen Servern, auf denen Quota installiert ist liefern auch korrekte Daten. Es gibt aber auch Server, auf denen kein Quota installiert ist, weil ich das dort nicht benötige.

Alle Server sind mit ISPConfig3 Patch8

In der user_quoata_stats.php:22 habe ich den SQL Befehl
Code:
SELECT data from monitor_data WHERE server_id > 2 AND type = 'harddisk_quota' ORDER BY created DESC
erweitert, um einzelne Server selektieren zu können.

Server 1 und 2 sind ohne Quota, 3 und 4 sind mit Quota. Beim Testen ist mir folgendes aufgefallen:
mit "server_id < 3": Liste wird angezeigt, alles "unlimited": soweit korrekt
mit "server_id < 4": Liste wird angezeigt, Speicherbelegung wird nur für Server 3 angegeben, sonst alles "unlimited": soweit korrekt
mit "server_id = 3": Liste wird angezeigt, Speicherbelegung wird nur für Server 3 angegeben, sonst alles "unlimited": soweit korrekt
mit "server_id > 3": Liste wird angezeigt, Speicherbelegung wird nur für Server 4 angegeben, sonst alles "unlimited": soweit korrekt
mit "server_id = 4": Liste wird angezeigt, Speicherbelegung wird nur für Server 4 angegeben, sonst alles "unlimited": soweit korrekt
mit "server_id > 2": Liste wird nicht angezeigt: alles leer

Daraus folgere ich, dass wenn man mehrere Server anzeigen lassen möchte, die Quota haben, hier etwas kaputt geht und $arr[$i] aus Abfrage if(!is_array($arr[$i])) kein Array ist:

Habe in der lib/classes/tpl.inc.php:~974 vor diesem Befehl eine Ausgabe gemacht, der mir $arr[$i] ausgibt
Code:
        private function _arrayBuild($arr)
        {
            if (is_array($arr) && !empty($arr)) {
                $arr = array_values($arr); // to prevent problems w/ non sequential arrays
             
                for ($i = 0; $i < count($arr); $i++) {
                    echo "arr[i]:".$arr[$i]."<br>";
                    if(!is_array($arr[$i]))  {
                        echo "var i:".$i;
                        return false;
                        }
                    foreach ($arr[$i] as $k => $v) { ...
Ergebnis auf der Webseite für alle Server:
Code:
arr[i]:Array
arr[i]:Array
arr[i]:40176
var i:0
Ergebnis auf der Webseite nur für Server mit Quota (server_id > 2):
Code:
arr[i]:Array
arr[i]:Array
arr[i]:40176
var i:0
40176 findet sich nur in $rec['used_sort'] in user_quoata_stats.php:~34 in Funktion prepareDataRow($rec) - aus diesem Grund reicht es vollkommen aus dieses Feld wegzulassen damit die Speicherplatzbelegung wieder angezeigt wird.

Auch keine schöne und dauerhafte Lösung. Ich möchte Euch bitten, dass sich einer der Entwickler dem anmehmen könnte, damit - was auch immer dieser Fehler ist - mit dem nächsten Patch beseitigt werden kann.

Danke Euch vielmals.
 
Zuletzt bearbeitet:

Till

Administrator
#2
Ich habe das unter Debian Single und multiserver, ubuntu, CentOS und opensuse getestet und es funktioniert auf allen Servern in p8 fehlerfrei. Da du sagst dass du in deinen Servern etwas gepatcht hast gehe ich davon aus dass deine Patches irgend etwas am Code ändern was dieses Problem bei dir verursacht, denn woanders gibt es keine Probleme.

Wenn du sicher bist dass du keine Zeile in einer der ispconfig Dateien geändert hast, dann mach bitte einen bugreport im bugtracker.
 
#3
Na ich habe lediglich alle Server von p5 auf p8 aktualisiert - mehr erstmal nicht.

Bevor ich ein Bugreport mache, hab ich noch eine Frage:

Beim Updpate von ISPConfig, hab ich die Erfahrung, gemacht, dass alle Änderungen, welche ich zuvor gemacht habe verworfen werden .. defacto eine neue gepachte Version eingespielt wird. Ist das der Fall oder gibt es Teile der Installation, welche nicht neu eingespielt werden?

Dann kann ich mir auch wirklich sicher sein, dass ich keine der ispconfig Dateien geändert habe.
 
#5
Also ich glaube den Fehler gefunden zu haben
Code:
if(!is_array($arr[$i])) return false;
sollte nicht FALSE sondern müsste TRUE zurückgeben
Code:
if(!is_array($arr[$i])) return TRUE;
Ist das nicht der Fall dann wird die Abarbeitung abgebrochen, wenn sich in $arr[$i] ein Array befindet.
Das ist für das Feld $rec["used_sort"] der Fall, da hier nicht wie bei allen anderen Feldern wie used, hard, soft, files darauf geachtet wird, siehe z.B
Code:
if (!is_numeric($rec['soft'])) $rec['soft']=$rec['soft'][1];
, dass dieFelder numerisch sind.
Oder zweitens eben hier sicherstellen dass
Code:
$rec['used_sort'] = $rec['used'];
ist nachdem die Nummerik von $rec['used'] geprüft wurde .. beides geht ich tendiere zu dem Zweiten.

Warum, das bei dir funktioniert ist mir echt unklar.

Ich würde ja gern ein Bugreport schreiben, muss ich das hier http://bugtracker.ispconfig.org/ machen und gibt es da was zu beachten oder einfach Problem schildern wie hier?
 
Zustimmungen: Till

Werbung