Quota-Ausgabe Fehler ISPConfig 3.0.3.1

#1
Quota-Ausgabe Fehler ISPConfig 3.0.3.1 / ISPConfig 3.0.4.4

Hallo,

mir ist kürzlich aufgefallen, dass die Quota-Ausgabe übers Controlpanel bei mir nur sporadisch funktioniert. Selten wird alles korrekt angezeigt (kurz nach einem Serverneustart), aber meistens bekomme ich den Fehler:
Code:
Fatal error:  Unsupported operand types in /usr/local/ispconfig/interface/web/sites/user_quota_stats.php on line 49
Die betroffene Stelle in der Datei user_quota_stats.php sieht so aus:
Code:
if($rec['used'] > 1024) {
                        $rec['used'] = [B]round($rec['used'] / 1024,2)[/B].' MB';
                } else {
                        $rec['used'] .= ' KB';
                }
Der Fehler taucht in der round()-Funktion auf. Ich habe mir nun $rec['used'] genauer angesehen. Der Inhalt davon ist wieder ein Array.
==> Der Zugriff muss auf das richtige Array Element geschehen.

Durch den Zugriff auf das 2. Array Element funktioniert es:
Code:
 ...
                        $rec['used'] = round($rec['used'][B][1][/B] / 1024,2).' MB';
 ...
Merkwürdig ist, dass der Fehler nur bei mir auftritt. Zumindest habe ich noch niemanden mit selbigem Problem gefunden.
 
Zuletzt bearbeitet:
#2
Kann den Fehler auf unserer Installation auch bestätigen.

Tauchte nach dem automatischen Update auf 3.0.3.1 auf, während dessen allerdings meine SSH Verbindung mit dem Server abbrach aus welchen Gründen auch immer.

Hatte vor ISPConfig nächste Woche einmal neu zu installieren, in der Hoffnung das Problem zu fixen. Sollte es dafür allerdings eine alternative Lösung geben - gerne.

Habe mich daher auch noch nicht mit Ursachenforschung beschäftigt, bin aber gerne bereit dazu, wenn es hilfreich ist.

Grüße

Jan Peters
 
#3
also mein Hotfix sieht so aus:

nach
Code:
  $rec['used'] = $monitor_data['user'][$username]['used'];
  $rec['soft'] = $monitor_data['user'][$username]['soft'];
  $rec['hard'] = $monitor_data['user'][$username]['hard'];
füge ich in Zeile 48

Code:
if (!is_numeric($rec['used']))
  $rec['used']=$rec['used'][1];
if (!is_numeric($rec['soft']))
  $rec['soft']=$rec['soft'][1];
if (!is_numeric($rec['hard']))
  $rec['hard']=$rec['hard'][1];
ein. Der Rest der Datei bleibt unangetastet.
 
#6
Noch eine kurze Ergänzung: Es werden jetzt zwar Werte angezeigt, diese stimmen aber zum Großteil nicht. Bei den meißten Sites steht dort "4kb", bei einigen wenigen allerdings die richtige Größe.
Inzwischen läuft 3.0.3.2 bei uns auf dem Server.

Nun das merkwürdige: Ich habe bereits einmal, nach dem Einspielen des "Patches" die (vermeintlich) richtigen Werte gesehen.

Irgenwelche Ideen?
@daben: Stimmen die Werte bei dir? Falls ja, muss ich wohl nochmal checken, was da mit dem Quota bei uns nicht stimmt.

Grüße und Danke für die Unterstützung

Jan Peters
 
#7
bei mir sind die Werte korrekt!
Was sagt denn die quota-Ausgabe, wenn du diese direkt von der Kommandozeile aus machst?

repquota -a -u

Sind die Werte korrekt?
 
#8
Die Werte passen, kurzer Auszug anbei:

Code:
.
.
.
web110     +-   31232   30720   31744   none    1990     0     0
web112     --   62512  102400  103424           3223     0     0
web113     --   86888  153600  154624           2877     0     0
web114     --   50220   51200   52224           2882     0     0
web115     --   25152   51200   52224           1989     0     0
web116     --   21664   51200   52224           1812     0     0
web117     --   71356  102400  103424           2372     0     0
web119     --   82064 1536000 1537024           1888     0     0
web120     --   14740   51200   52224           1151     0     0
web121     --  110196  512000  513024           4828     0     0
web122     --   95092  512000  513024           8674     0     0
web124     --   32100  307200  308224           4088     0     0
web125     --   32284  102400  103424           2074     0     0
web132     --  108788  204800  205824           4179     0     0
web141     --   50960 1024000 1025024           6903     0     0
web142     --   16740  102400  103424           2468     0     0
web143     --  233584  256000  257024          14141     0     0
web144     --      68  102400  103424             19     0     0
web146     --   44280   51200   52224           2627     0     0
web150     --   14200  102400  103424           1763     0     0
web151     --   44256   51200   52224           2984     0     0
web152     --   58632 1536000 1537024           2813     0     0
web154     --  125016 1024000 1025024          14054     0     0
web155     --   10588  102400  103424           1088     0     0
.
.
.
In ISPConfig hat die Domain von web155 z.B. nur 4kb.
Spaßig ... jetzt gerade nach dem Ausführen von repquota -a -u stimmen die Werte "mal wieder"... sehr komisch.

//Update (19:25 Uhr):
Und schwups, da sind nun fast alle Einträge wieder auf "4kb". Irgendwas scheint da nicht richtig zu laufen...

Grüße
 
Zuletzt bearbeitet:
#10
Nach einem Distributionsupgrade von Debian 5 auf Debian 6 habe ich nun mit ISPConfig 3.0.4.4 erneut den Fehler.
Die korrekten Werte stehen auf dem Server nun in $rec['used'][0] anstatt $rec['used'][1].

Array ( [0] => 45120 [1] => 60 ) Array ( [0] => 1092360 [1] => 0 ) Array ( [0] => 54760 [1] => 52 ) Array ( [0] => 310440 [1] => 56 )...
Da es bei meinem zweiten Server im Element [1] steht habe ich den Code nun folgendermaßen angepasst:
Code:
if (!is_numeric($rec['used'])){
                        if ($rec['used'][0] > $rec['used'][1]){
                                $rec['used']=$rec['used'][0];
                        }else{
                                $rec['used']=$rec['used'][1];
                        }
                }
                if (!is_numeric($rec['soft'])) $rec['soft']=$rec['soft'][1];
                if (!is_numeric($rec['hard'])) $rec['hard']=$rec['hard'][1];
Damit werden nun überall wieder die korrekten Werte angezeigt. Es ist aber schon etwas seltsam...
 

Werbung

Top