2013-01-22

關於Cacti plugin manage中文問題

Cacti有一個plugin叫manage…

它可以建立site(看作區或)與group(組點)…

如果管理的網路拓樸不小且有在實際的位址有區域分別(什麼台北、台中區啦,或a棟、b棟的),可以使用site來建立區域別,再到group建立各區域別中的分點群。

不過以上不是我這一篇的重點。

主要是因為我最近在看我建立的cacti時發現,雖然在網頁上看到的是完整的中文,但進入phpmyadmin看到db中的name都是亂碼。
而且我直接用phpmyadmin針對name直接輸入中文按下修改之後發現它還是寫入亂碼。

我確定cacti建立connect是用utf8呀…?

還是因為我沒設定mysql的default charset?

ok,打開my.cnf,在[mysqld]中加上
default-character-set=utf8
default-collation=utf8_general_ci
用phpmyadmin直接寫中文的方式正常了,但cacti的網頁反而變成全亂碼。

後來再用cacti中提供的方式去改device的name,可以看到亂碼的地方都正常了,而且cacti回寫到mysql的值也是正常的中文。

但這邊manage這個plugin提供的site的地方還是亂碼…怎麼改我都改不好。

最後總算找到…

請到cacti/plugins/manage/manage_sites.php,找到
<?php
          print "<a class='linkEditMain' href='manage_sites.php?edit=1&id=".$host["id"]."'>";
          print ereg_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", $host["name"]);
          ?>
地方,你會看到它做了ereg_replace…我有試著把$_REQUEST["filter"]印出來是空的…
再加上上述之前的有<td...><a....>,卻沒有</a>與</td>…真奇怪
所以乾脆就合併,也把ereg跟preg_quote拿掉…因為感覺沒有用,最後是下面
<?php
          print "<a class='linkEditMain' href='manage_sites.php?edit=1&id=".$host["id"]."'>" . $host["name"] . "</a>";
          //print ereg_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", $host["name"]);
          ?>
這樣site中的中文就正常了



沒有留言: