解决zabbix监控因php问题导致图形界面中文乱码方法

解决因编译php中添加了-enable-gd-jis-conv选项导致Zabbix监控系统图形界面中文乱码问题

现象:

php编译参数:

说明:

如果PHP编译时启用–enable-gd-jis-conv选项的话,那么非ASCII字符(例如汉字、拼音、希腊文和箭头) 会被当成EUC-JP编码 (phpinfo中美其名曰“支持JIS编码的字体”), 从而导致乱码(由于西文字体没有假名或汉字,一般表现为全部是方框)。imagettftext()函数是将字符写入到图片的函数,这个问题就是由这个函数导致的。

在网上查了好几篇教程不全,以下为本人生产实践操作,在zabbix3.2版本,php7.2版本

方法一:
重新编译安装php,禁用-enable-gd-jis-conv选项,这种方式代价较大;

方法二:
因生产环境php使用年限比较久,不知道是否有应用在使用,不敢轻易重新编译,故按照方法二解决

第一步:
在/etc/nginx/html/zabbix/include中修改graphs.inc.php文件(先备份)
cp graphs.inc.php graphs.inc.php.bak
vim graphs.inc.php #在末尾添加如下代码

function to_entities($string){
    $len = strlen($string);
    $buf = "";
    for($i = 0; $i < $len; $i++){
        if (ord($string[$i]) <= 127){
            $buf .= $string[$i];
        } else if (ord ($string[$i]) <192){
            //unexpected 2nd, 3rd or 4th byte
            $buf .= "?";
        } else if (ord ($string[$i]) <224){
            //first byte of 2-byte seq
            $buf .= sprintf("&#%d;",
                ((ord($string[$i + 0]) & 31) << 6) +
                (ord($string[$i + 1]) & 63)
            );
            $i += 1;
        } else if (ord ($string[$i]) <240){
            //first byte of 3-byte seq
            $buf .= sprintf("&#%d;",
                ((ord($string[$i + 0]) & 15) << 12) +
                ((ord($string[$i + 1]) & 63) << 6) +
                (ord($string[$i + 2]) & 63)
            );
            $i += 2;
        } else {
            //first byte of 4-byte seq
            $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;
        }
    }
    return $buf;
}

第二步:
找到该文件中imagettftext()函数(一共三处)
将最后一个参数$string修改为to_entities($string),三处都需要修改,无需重启,刷新即可解决问题。

根据以上方法即可解决,希望能帮到你。



原文地址:https://www.cnblogs.com/liucx/p/11756734.html

时间: 2024-11-11 06:23:17

解决zabbix监控因php问题导致图形界面中文乱码方法的相关文章

分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题

之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/data/www/zabbix),打开 locales.inc.php文件[[email protected] include]# pwd/data/www/zabbix/include[[email protected] include]# vim locales.inc.php 然

提取zabbix监控平台单台服务器图形并发邮件python实现

需求:希望每天邮件发出当天某台服务器的监控状态,如果某天都登陆zabbix截图很麻烦,而且并不能保证每天都准点操作,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自动化. 一.效果图: 二.代码: #!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb import datetime import cookielib, urllib2,urllib import smtplib from email

Zabbix切换中文后图形界面文字乱码的最新解决办法

首先第一步,打开windows的控制面板,找到字体,选择一个你喜欢的字体,准备拷贝到Linux的Zabbix服务器端. 之前搭过很多zabbix服务,近期再搭建的时候解决中文乱码有点问题,原来的是把字体放到 /usr/share/zabbix/fonts/ 这个文件夹,但是这次我找不到这个文件夹了,我以为我记错了,上网查看文章中并没有改变依然是这个路径.只能运行命令找一下 rpm -ql zabbix-web | grep fonts 发现文件夹的路径变成了 /usr/share/zabbix/

解决zabbix的web界面中文乱码问题

对于zabbix在web界面上出现中文乱码的问题,这个问题比较常见,网上也有很多对应的解决办法,在此说一下个人觉得比较快捷方便的一种. 这是我自己使用lnmp环境搭建的一台zabbix测试机,如下图所示,出现了中文乱码 处理步骤: 1. 到自己电脑挑选好喜欢的字体. 字体文件路径在:控制面板--查看方式:小图标--字体,如下图: 在这里我先选好了一种字体'微软雅黑',复制到桌面,一种是正常字体,一种是粗体,这里选正常的. 2. 然后ssh进入我们的zabbix_server,找到我们字体的存放位

应对ubuntu linux图形界面卡住的方法

有的时候,我的ubuntu图形界面会卡住,当然这个时候你可以重新启动,不过最好的办法应该是结束这个桌面进程 那桌面卡住了怎么来结束桌面进程呢? 这时候就需要打开tty了 按下键盘ctrl+alt+f1或f2或一直到f6 不要f7,因为ubuntu默认桌面就是在tty7里面打开的 此时输入你的用户名密码就可以了 然后我们在使用startx就又开起了一个图形界面 我们想把原来的图形界面给杀掉怎么做呢? 如下 ps -ef | grep tty7 在显示的里表中找出tty7的pid,比如我的 然后 k

(转)解决ScrollView嵌套ListView或者GridView导致只显示一行的方法

即动态获取ListView和GridView的高度 一.对于ListView ListView listview= new ListView(this); setListViewHeightBasedOnChildren(listview);即可 1 public static void setListViewHeightBasedOnChildren(ListView listView) { 2 // 获取ListView对应的Adapter 3 ListAdapter listAdapter

Zabbix4.0 Web管理界面中文乱码解决方法(转)

Zabbix安装好之后,监控图形页面出现字符集乱码 解决方法:1.复制本地电脑C:\Windows\Fonts\simkai.ttf(楷体)上传到zabbix服务器网站目录的fonts目录下 2.zabbix网站目录fonts目录查找如下:[[email protected] ~]# whereis zabbixzabbix: /usr/lib/zabbix /etc/zabbix /usr/share/zabbix[[email protected] ~]# cd /usr/share/zab

解决Ubuntu 9.10中vim和gedit显示中文乱码

当你刚装完Ubuntu或者debian的时候,你会发现gedit和vim打开中文都会乱码,下面是解决方法 打开vim的配置文件,位置在/etc/vim/vimrc 在其中加入 set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=prc 保存退出,此时vim就能正确显示中文了. 对于gedit,解决方法如下: 在终端中运行 gconf-editor 在打开的界面中选择: apps->gedit

cocos2dx解决中文乱码方法

使用plist文件,优点方便做多国语言支持~也不用去做编码转换 1.Resource目录下新建text.plist文件,内容格式如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"