とりあえず 2.3.1 をビルドしてみたわけですが、
Zabbix 2.1 が出てからほぼ1年になるのねぇ、と思いながら、次のメジャーバージョン 2.4 の開発版である 2.3.1 を deb パッケージにしてみた。
[From Zabbix 2.3.1 を 独自にパッケージングしてみた - Soukaku's HENA-CHOKO Blog]
インストールしてみたら、今度は色んな所で、
ini_set(): Use of mbstring.internal_encoding is deprecated [dashboard.php:22 → require_once() → ZBase->run() → ZBase->initLocales() → init_mbstrings() → ini_set() in /usr/share/zabbix/include/locales.inc.php:25]
というエラーメッセージが表示されるように…。
例えば、こんな↓感じ。
これに関しては、 Zabbix のサポートフォーラムの方に、同じエラーが出ていたことが報告されていて、それ自体は pre-2.2.5rc1 、 pre-2.3.2 で fix されているということらしいので、
CLOSED. Fixed in pre-2.2.5rc1 r46852, pre-2.3.2 r46853.
[From [#ZBX-8278] frontend-php: Use a deprecated function : mbstring.internal_encoding - ZABBIX SUPPORT]
svn で取ってきていた 2.3.3 のソースとインストール済みの"/usr/share/zabbix/include/locales.inc.php
" を比較してみると、PHPの encoding の扱い(と思われる)の部分が確かに書き換わっている。
nexus01:~# diff -u /usr/share/zabbix/include/locales.inc.php /usr/local/src/zabbix-2.3.3.trunk.47530/frontends/php/include/locales.inc.php
--- /usr/share/zabbix/include/locales.inc.php 2014-05-30 23:52:49.000000000 +0900
+++ /usr/local/src/zabbix-2.3.3.trunk.47530/frontends/php/include/locales.inc.php 2014-06-29 23:40:49.000000000 +0900
@@ -21,24 +21,26 @@
function init_mbstrings() {
$res = true;
- $res &= mbstrings_available();
- ini_set('mbstring.internal_encoding', 'UTF-8');
- $res &= (ini_get('mbstring.internal_encoding') === 'UTF-8');
+ $res &= extension_loaded('mbstring');
+
+ if (version_compare(PHP_VERSION, '5.6', '<')) {
+ ini_set('mbstring.internal_encoding', 'UTF-8');
+ $res &= (ini_get('mbstring.internal_encoding') == 'UTF-8');
+ } else {
+ // it may be necessary to check / set php.internal encoding too after 5.6 is released, see ZBX-8278
+ ini_set('default_charset', 'UTF-8');
+ $res &= (ini_get('default_charset') == 'UTF-8');
+ }
+
ini_set('mbstring.detect_order', 'UTF-8, ISO-8859-1, JIS, SJIS');
$res &= (ini_get('mbstring.detect_order') === 'UTF-8, ISO-8859-1, JIS, SJIS');
- return $res;
-}
-function mbstrings_available() {
- return function_exists('mb_strlen')
- && function_exists('mb_strtoupper')
- && function_exists('mb_strtolower')
- && function_exists('mb_strpos')
- && function_exists('mb_substr');
+ return $res;
}
/**
+/**
* Returns a list of all used locales.
*
* Each locale has the following properties:
ということで、これについては、ビルドしてあった 2.3.3 をインストールしたことで解消済み、となったわけですが。
実は、まだエラーがある模様…。
ini_set(): Use of mbstring.internal_encoding is deprecated [dashboard.php:312 → CTag->setMenuPopup() → CTag->attr() → CTag->setAttribute() → CHtml::serialize() → CJs::encodeJson() → CJSON->encode() → ini_set() in /usr/share/zabbix/include/classes/class.cjson.php:137]
ini_set(): Use of mbstring.internal_encoding is deprecated [dashboard.php:312 → CTag->setMenuPopup() → CTag->attr() → CTag->setAttribute() → CHtml::serialize() → CJs::encodeJson() → CJSON->encode() → ini_set() in /usr/share/zabbix/include/classes/class.cjson.php:161]
実際には、もっとエラーメッセージ出ているだけど、一部だけ。
こちらに関しては、まだサポートフォーラムにも報告されていないようなので、報告してきますかね。とりあえずは、本来の機能である監視ができないということではないようなので、緊急度は低かったりしますけど。
コメントする