# Darstellungsfehler nach Update auf 2.2.27



## make-fun (2. Dez. 2008)

Hallo,
nach einem Update von 2.2.25 auf 2.2.27 (Ubuntu 8.04) gibt es nun einen Darstellungsfehler in ISPConfig: *ISP Server Status:
*

```
Dateisystem | GrÃ¶ÃŸe | Benut | Verf | Ben% | EingehÃ¤ngt
```
Locale:
	
	



```
LANG="de_DE.UTF-8"
```
Hat das noch jemand?


----------



## Till (2. Dez. 2008)

ISPConfig unterstützt kein UTF8, Du musst das "normale" deutsche Endcoding nehmen.


----------



## make-fun (2. Dez. 2008)

Unter der 2.2.25 stimmte die Darstellung ja und Ubuntu lief schon seit Anbeginn auf LANG="de_DE.UTF-8" — bei der Installation oder Upgrades hatte ich auch schon immer Darstellungsfehler in den ISPConf - Install-Texten/Menues, was ja nicht weiter stört.

Diese Darstellung haben wir also definitiv *erst seit 2.2.27*

Shellausgaben sind auch kein Problem:

```
# df -h
Dateisystem            Größe Benut  Verf Ben% Eingehängt auf
/dev/hda3              75G   40G   31G  57% /
```


```
# locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
```


----------



## make-fun (2. Dez. 2008)

*Könnte es an Apache/PHP-Kombi liegen?*

@Till
 Habe mal etwas getestet…
Wenn ich den Code aus der  /home/admispconfig/ispconfig/lib/plugins/check_disk.plugin.php
nehme und ihn auf der Shell als root ausführe stimmt alles — aber eben mit *#!/usr/bin/php*

```
#!/usr/bin/php
<?PHP
…
$html_out .= '<table width="80%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC">';
$fd = popen ("df -h", "r");
while (!feof($fd)) {
$buffer .= fgets($fd, 4096);
}…
?>
```
Ausgabe(#!/usr/bin/php)
	
	



```
<table width="80%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC"><tr>
                  <td>Dateisystem</td>
                  <td>Größe</td>
                  <td>Benut</td>
                  <td>Verf</td>
                  <td>Ben%</td>
                  <td>Eingehängt</td>
                  </tr>
```
Danach habe ich die Ausgaben über Apache&PHP noch verglichen und auch da zeigen sich Unterschiede.

* ISPConfig-Server on :81*

```
<table width="80%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC"><tr>
          <td>Dateisystem</td>
          <td>GrÃ¶ÃŸe</td>
          <td>Benut</td>
          <td>Verf</td>
          <td>Ben%</td>
          <td>EingehÃ¤ngt</td>
          </tr>
```
*Normaler Web-Server*(PHP Version 5.2.4-2ubuntu5.3)
	
	



```
<table width="80%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC"><tr>
          <td>Filesystem</td>
          <td>Size</td>
          <td>Used</td>
          <td>Avail</td>
          <td>Use%</td>
          <td>Mounted</td>
          </tr>
```
Hier ist dann leider Ende für mich, da ich mir das nicht weiter erklären kann. Wie könnte man die Shell mal mit dem ISPConfig-PHP ausführen — quasi #!/root/ispconfig/php?

Hoffe, dass Dir das evtl. als Ansatz hilft


----------



## Till (3. Dez. 2008)

> Wie könnte man die Shell mal mit dem ISPConfig-PHP ausführen — quasi #!/root/ispconfig/php?


Ja. Aber ich denke nicht dass es was mit dem PHP zu tun hat. In ISPConfig wurde in dem Bereich auch nichts geändert. Wie ich oben geschrieben hatte unterstützt ISPConfig kein UTF-8 und das was Du da siehst ist ein UTF-8 encoding Problem.


----------



## make-fun (3. Dez. 2008)

Naja, wie gesagt einzig neu ist das Update auf 2.2.27, also muss es doch damit zu tun haben…

Ich habe übrigens noch Screenshots von der 2.2.25 auf der alle Umlaute richtig dargestellt zu sehen sind!

Wie kann ich denn die Shell auf "#!/root/ispconfig/php" umstellen?


----------



## Till (3. Dez. 2008)

Wiso willst Du die Shell darauf umstelle? Die Shell ist z.B. /bin/bash, PHP ist keine Shell.


----------



## make-fun (3. Dez. 2008)

Ok hätte villeicht *CLI-PHP* schreiben sollen… dachte "*#!/root/ispconfig/php*" wäre klar genung…


----------



## Till (3. Dez. 2008)

PHP ist keine Shell, auch die cli Version nicht und was hat das mit diesem Thread zu tun?


----------



## make-fun (3. Dez. 2008)

Hmmm, das alles nur mit dem Thread zu tun!
Führe ich df -h auf der Shell aus stimmt meine Augabe
Führe ich PHP-Code …$fd = popen ("df -h", "r");… auf dem Webserver aus bekomme ich enlische Ausgaben
Führe ich …$fd = popen ("df -h", "r");… als CLI-PHP(Command Line Interface) mit *#!/usr/bin/php* aus stimt die ausgabe mit deutschen Umlauten!
Nur auf  dem ISPConfig-Server on :81 stimmt die Ausgabe seit 2.2.27 nicht mehr!!
Also möcht ich den Code mit dem CLI-PHP des ISPConfig-Server um zu sehen, was dann ausgegeben wird.
Die falsche Darstellung ist ja evtl. wirklich nur hier, aber irgendwie stimmt mich soetwas einfach nachdenklich.

Edit:
@PHP ist keine Shell
Das kann man sicher so sagen. Im Englishen Sprachraum sieht man das jedoch etwas anders, da die erste Zeile *#!/usr/bin/php*
ja von der Shebang-Zeile abgeleitet ist, ist es normal zu sagen "run a php shell…"


----------



## Till (4. Dez. 2008)

> Also möcht ich den Code mit dem CLI-PHP des ISPConfig-Server um zu sehen, was dann ausgegeben wird.


Nur was soll Dir das bringen? ISPConfig verwendet das PHP nicht in dieser Art, das hat also keinerlei Aussagekraft zu dem Problem.

Wie ich bereits oben erwähnt habe, das ist ein UTF-8 Problem. ISPConfig unterstützt kein UTF-8, dein normaler Webserver ist vermutlich auf utf-8 als charset eingestellt daher geht es dort.

Du kannst also entweder Das Locale auf der Shell auf latin1 umstellen oder aber Du hast einen Dartsellungsfehler. Wenn Du mal ins ISPConfig SVN rein siehst, stellst Du fest dass in dem Code für diesen Bereich überhaupt nichts geändert wurde von ISPConfig 2.2.25 zu 2.2.27, der ist also identisch.


----------



## make-fun (4. Dez. 2008)

Du hast Recht, da hat sich nichts geändert. Dabei ist mir dann an Hand des Relasedatum aufgefallen, dass ich auf diesem Server von 2.2.23 auf 2.2.27 gegangen bin — nicht wie ich geschrieben hatte von 2.2.25.
Ich hatte den ganzen Server im Mai von Ubuntu 6.06 auf 8.08 gehoben und dabei das damals aktuelle ISPConfig 2.2.23 mit drauf gespielt — die 25 hatte ich wegen einem anderen Server im Kopf, sorry.

Ich habe das "Problem" nun einfach durch Hardcodierung in der _check_disk.plugin.php_ beseitigt.
Auf UTF-8 kann ich nicht verzichten, da Leute aus Asien und Nordeuropa, auf dem Server Arbeiten und es mich fast18 Monate gekostet hat, alle auf UTF-8 zu trimmen — wie oft ich dabei von "Darstellungs-Problemen" verfolgt wurde kannst du sicher erahnen — das will ich nicht noch mal…

Daher wollte ich der Sache eben auch weiter auf den Grund gehen, denn sonst bekomme ich bald wieder unzählige Emails.


----------



## Till (4. Dez. 2008)

Ich werde mal sehen ob wir das irgendwie ändern können. Hast Du die Überschriften hart codiert oder ein utf8_decode benutzt?


----------



## make-fun (4. Dez. 2008)

War faul und habe es hart gemacht… dachte noch, ich lege die Texte evtl. in den Sprachen-Dateien ab — aber English ist hier schon ok. Es ist nur um nicht wieder das alte Thema und Diskussionen um UTF-8 Probleme aufkommen zu lassen ;-)

Beunruhigend ist es noch etwas, da ich unter dem ISPConfig-Server:81 auch RoundCube nutzen will — für alle User.


```
$html_out .= '<div align="center"><table width="80%" border="0" cellspacing="1" cellpadding="4" bgcolor="#CCCCCC">';
++    $html_out .= '<tr>
        <!-- Fix: --><td class="normal_bold" align="left" bgcolor="#ffffff">Filesystem</td>
        <!-- Fix: --><td class="normal_bold" align="right" bgcolor="#ffffff">Size</td>
        <!-- Fix: --><td class="normal_bold" align="right" bgcolor="#ffffff">Used</td>
        <!-- Fix: --><td class="normal_bold" align="right" bgcolor="#ffffff">Avail</td>
        <!-- Fix: --><td class="normal_bold" align="right" bgcolor="#ffffff">Use%</td>
        <!-- Fix: --><td class="normal_bold" align="left" bgcolor="#ffffff">Mounted</td>
        </tr>';

    $fd = popen ("df -h", "r");
    while (!feof($fd)) {
        $buffer .= fgets($fd, 4096);
    }
        $df_out = split("\n",$buffer);
++    array_shift($df_out);
        $df_num = sizeof($df_out);
        for($i=0;$i<$df_num;$i++){
          if(ltrim($df_out[$i]) != $df_out[$i]){
            if(isset($df_out[($i-1)])){
              $df_out[($i-1)] .= $df_out[$i];
              unset($df_out[$i]);
            }
          }
        }

        $html_out .= '<tr>';
        $mrow = 0;
        foreach($df_out as $df_line) {
        $values = preg_split ("/[\s]+/", $df_line);
        $mln = 0;
--     #$font_class = 'normal_bold';
++     $font_class = 'normal';
--     #if($mrow > 0) $font_class = 'normal';
        foreach($values as $value) {
        $align = 'left';
        if($mln > 0 and $mln < 5) $align = 'right';
        if($mln < 6 and $value != "") $html_out .= '
        <!-- Check: --><td bgcolor="#FFFFFF" class="'.$font_class.'" align="'.$align.'">'.$value.'</td>';
        $mln++;
        }
        $mrow++;

        $html_out .= '
        </tr>';
        }
```


----------

