So lösen Sie das Problem der Zabbix-Überwachung, das aufgrund von PHP-Problemen zu verstümmelten chinesischen Zeichen in der grafischen Benutzeroberfläche führt

So lösen Sie das Problem der Zabbix-Überwachung, das aufgrund von PHP-Problemen zu verstümmelten chinesischen Zeichen in der grafischen Benutzeroberfläche führt

Lösen Sie das Problem der verstümmelten chinesischen Zeichen in der grafischen Oberfläche des Zabbix-Überwachungssystems, das durch das Hinzufügen der Option -enable-gd-jis-conv beim Kompilieren von PHP verursacht wird

Phänomen:

PHP-Kompilierungsparameter:

veranschaulichen:

Wenn PHP mit der aktivierten Option --enable-gd-jis-conv kompiliert wird, werden Nicht-ASCII-Zeichen (wie chinesische Schriftzeichen, Pinyin, Griechisch und Pfeile) als EUC-JP-Zeichen (in phpinfo „JIS-codierte Schriftarten“ genannt) behandelt, was zu verstümmelten Zeichen führt (da westliche Schriftarten keine Kana- oder chinesischen Schriftzeichen haben, werden sie normalerweise als Kästchen angezeigt). Die Funktion imagettftext() wird verwendet, um Zeichen in ein Bild zu schreiben. Dieses Problem wird durch diese Funktion verursacht.

Ich habe mehrere unvollständige Tutorials im Internet überprüft. Das Folgende ist mein Produktionspraxisbetrieb in der Version zabbix3.2, Version php7.2

Methode 1:

Kompilieren und installieren Sie PHP neu und deaktivieren Sie dabei die Option -enable-gd-jis-conv. Diese Methode ist teurer.

Methode 2:

Da die Produktionsumgebung PHP schon lange verwendet, weiß ich nicht, ob es Anwendungen gibt, die es verwenden. Daher wage ich es nicht, es einfach neu zu kompilieren. Daher löse ich es gemäß Methode 2

Erster Schritt:

Ändern Sie die Datei graphs.inc.php in /etc/nginx/html/zabbix/include (vorher sichern).

cp graphs.inc.php graphs.inc.php.bak

vim graphs.inc.php #在末尾添加如下代碼

Funktion to_entities($string){
 $len = strlen($string);
 $buf = "";
 für($i = 0; $i < $len; $i++){
  wenn (ord($string[$i]) <= 127){
   $buf .= $string[$i];
  } sonst wenn (ord ($string[$i]) < 192) {
   //unerwartetes 2., 3. oder 4. Byte
   $buf .= "?";
  } sonst wenn (ord ($string[$i]) < 224) {
   //erstes Byte der 2-Byte-Sequenz
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 31) << 6) +
    (ord($string[$i + 1]) & 63)
   );
   $i += 1;
  } sonst wenn (ord ($string[$i]) < 240) {
   //erstes Byte der 3-Byte-Sequenz
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 15) << 12) +
    ((ord($string[$i + 1]) & 63) << 6) +
    (ord($string[$i + 2]) & 63)
   );
   $i += 2;
  } anders {
   //erstes Byte der 4-Byte-Sequenz
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 7) << 18) +
    ((ord($string[$i + 1]) & 63) << 12) +
    ((ord($string[$i + 2]) & 63) << 6) +
    (ord($string[$i + 3]) & 63)
   );
   $i += 3;
  }
 }
 $buf zurückgeben;
}

Schritt 2:

Suchen Sie in der Datei nach der Funktion imagettftext() (insgesamt drei Stellen).

Ändern Sie den letzten Parameter $string in to_entities($string) . Alle drei Stellen müssen geändert werden. Kein Neustart erforderlich, aktualisieren Sie einfach, um das Problem zu lösen.

Zusammenfassen

Oben ist die Methode, die ich Ihnen vorgestellt habe, um das Problem verstümmelter chinesischer Schriftzeichen in der grafischen Benutzeroberfläche der Zabbix-Überwachung aufgrund von PHP-Problemen zu lösen. Ich hoffe, sie wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Lösung für das Problem mit verstümmelten chinesischen Dateinamen in PHP fopen
  • PHP liest Dateien und analysiert die Methode zur Lösung des chinesischen verstümmelten UTF-8
  • Lösung für die verstümmelte Textausgabe von PHP
  • Beispiellösung zum Schreiben verstümmelter chinesischer Zeichen in MySQL in PHP
  • Lösung für PHP, das verstümmelten txt-Code schreibt
  • Lösen Sie das Problem, dass PHP verstümmelte Zeichen in die Datenbank schreibt
  • Lösung für verstümmelte Zeichen beim Senden von Push-Nachrichten in PHP WeChat
  • PHP löst das Problem der verstümmelten chinesischen Ausgabe

<<:  So erfassen Sie Ausnahmen in React

>>:  Optimieren Sie die Speichereffizienz von BLOB- und TEXT-Spalten in InnoDB-Tabellen

Artikel empfehlen

Ubuntu-Grundeinstellungen: Installation und Nutzung des OpenSSH-Servers

Protokollieren Sie die Installation und Verwendun...

Stapelweises Ersetzen eines Teils der Daten eines Felds in MySQL (empfohlen)

Stapelweises Ersetzen eines Teils der Daten eines...

Zusammenfassung häufig verwendeter SQL-Operationen in MySQL-Tabellen

1. Sehen Sie sich die Feldtypen in der Tabelle an...

Snake-Spiel mit nativem JS schreiben

In diesem Artikel wird der spezifische Code zum S...

WePY-Cloud-Entwicklungspraxis im Linux-Befehlsabfrage-Applet

Hallo zusammen, heute werde ich mit Ihnen die WeP...

Docker-Netzwerkprinzipien und detaillierte Analyse benutzerdefinierter Netzwerke

Docker virtualisiert eine Brücke auf dem Host-Rec...

So erstellen Sie eine Ansicht in MySQL

Grundlegende Syntax Sie können eine Ansicht mit d...

Lösung für die Auswirkungen leerer Pfade auf die Seitenleistung

Vor ein paar Tagen habe ich einen von Yu Bo getei...

So implementieren Sie Web-Stresstests mit Apache Bench

1. Einführung in Apache Bench ApacheBench ist ein...