PHP の問題により、Zabbix モニタリングでグラフィカル インターフェイスに中国語の文字化けが発生する問題を解決する方法

PHP の問題により、Zabbix モニタリングでグラフィカル インターフェイスに中国語の文字化けが発生する問題を解決する方法

PHP のコンパイル時に -enable-gd-jis-conv オプションを追加することで発生する、Zabbix 監視システムのグラフィカル インターフェイスでの中国語の文字化けの問題を解決します。

現象:

PHP コンパイル パラメータ:

例:

PHP が --enable-gd-jis-conv オプションを有効にしてコンパイルされている場合、非 ASCII 文字 (中国語の文字、ピンイン、ギリシャ語、矢印など) は EUC-JP 文字 (phpinfo では「JIS エンコード フォント」と呼ばれます) として扱われ、文字化けが発生します (西洋フォントにはかなや中国語の文字がないため、通常はすべて四角で表示されます)。 imagettftext() 関数は、画像に文字を書き込むために使用されます。この問題はこの関数によって発生します。

インターネットでいくつかの不完全なチュートリアルを確認しました。以下は、zabbix3.2バージョン、php7.2バージョンでの私の実稼働練習操作です。

方法1:

-enable-gd-jis-conv オプションを無効にして、PHP を再コンパイルしてインストールします。この方法はコストがかかります。

方法2:

本番環境のPHPは長く使用しているため、それを使用しているアプリケーションがあるかどうかわからないため、簡単に再コンパイルすることはあえてせず、方法2に従って解決します

最初のステップ:

/etc/nginx/html/zabbix/includegraphs.inc.phpファイルを変更します (最初にバックアップしてください)

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

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

関数 to_entities($string){
 文字列の長さを strlen で指定します。
 $buf = "";
 ($i = 0; $i < $len; $i++){
  (ord($string[$i]) <= 127)の場合{
   $buf .= $string[$i];
  } そうでない場合 (ord ($string[$i]) < 192) {
   //予期しない2番目、3番目、または4番目のバイト
   $buf .= "?";
  } そうでない場合 (ord ($string[$i]) < 224) {
   //2バイトシーケンスの最初のバイト
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 31) << 6) +
    (ord($文字列[$i + 1]) & 63)
   );
   $i += 1;
  } そうでない場合 (ord ($string[$i]) < 240) {
   //3バイトシーケンスの最初のバイト
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 15) << 12) +
    ((ord($string[$i + 1]) & 63) << 6) +
    (ord($文字列[$i + 2]) & 63)
   );
   $i += 2;
  } それ以外 {
   //4バイトシーケンスの最初のバイト
   $buf .= sprintf("&#%d;",
    ((ord($string[$i + 0]) & 7) << 18) +
    ((ord($string[$i + 1]) & 63) << 12) +
    ((ord($string[$i + 2]) & 63) << 6) +
    (ord($文字列[$i + 3]) & 63)
   );
   $i += 3;
  }
 }
 $buf を返します。
}

ステップ2:

ファイル内のimagettftext()関数を見つけます(合計3か所)

最後のパラメータ $string をto_entities($string)に変更します。3 か所すべてを変更する必要があります。再起動する必要はありません。問題を解決するには、更新するだけです。

要約する

上記は、PHP の問題により Zabbix モニタリングのグラフィカル インターフェイスで中国語の文字化けが発生する問題を解決するために紹介した方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • PHP fopen での中国語ファイル名の文字化け問題の解決方法
  • PHP はファイルを読み取り、中国語の文字化けした UTF-8 を解決する方法を分析します
  • PHP の文字化けしたテキスト出力の解決方法
  • PHP で文字化けした中国語の文字を MySQL に書き込むためのサンプル ソリューション
  • PHP が txt で文字化けしたコードを書き込む場合の解決策
  • PHPがデータベースに文字化けした文字を書き込む問題を解決する
  • PHP WeChatでプッシュメッセージを送信する際の文字化けの解決方法
  • PHP は中国語の出力が文字化けする問題を解決します

<<:  Reactで例外を適切にキャプチャする方法

>>:  InnoDB テーブルの BLOB 列と TEXT 列のストレージ効率を最適化します。

推薦する

mysql における mydumper と mysqldump の比較

いくつかのテーブルまたは単一のデータベースのみをバックアップする場合は、innobackup よりも...

docker を使用して kafka プロジェクトをデプロイする Centos6 方法の分析

この記事では、Docker を使用して Centos6 に Kafka プロジェクトをデプロイする方...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

CSS3アニメーションを使用して、小さい円から大きい円に拡大し、外側に広がる効果を実現する例

序文この記事では、CSS3アニメーションを使用して、円が小さいものから大きく拡大し、外側に広がる効果...

HTML ページ ヘッダー コード例の詳細な説明

知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...

Docker ケース分析: MySQL データベース サービスの構築

目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...

CentOS7 のシステム サービスに Nginx を追加する方法

導入コンパイル、インストール、問題の解決後、Nginx は正常に動作していますが、現時点では Ngi...

Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

Nginx ロードバランシングの設定方法

目次Nginx 負荷分散構成Nginx 負荷分散戦略ポーリング(デフォルト)重さip_ハッシュ公正(...

MySQLの整数および文字列インデックスの無効化または暗黙的な変換に関する簡単な説明

目次問題の概要問題の再現問題の拡大結論は問題の概要今日、仕事中に、DBA が突然、SQL に暗黙的な...

Vue3 手動カプセル化ポップアップ ボックス コンポーネント メッセージ メソッド

この記事では、ポップアップボックスコンポーネントメッセージのVue3手動カプセル化の具体的なコードを...