アイテムのキーに日本語入力不可(1.8.6-)

昨日Twitterで話題に上がっていた、アイテムのキーに日本語が入
力できない件です。
現象としては、キーに日本語を含む値を入力したアイテムを登録し
ようとすると、

 エラー: アイテムを追加できません
 アイテムキーのエラー: キーのフォーマットが正しくありません

とエラーが表示されて登録することができません。
1.8.5であれば、キーに日本語入力可能です。

このメッセージが出るということで、class.citemkey.php内の、

 private function parseKeyParameters()

でエラーと判定されていると思われます。
# メッセージのキーは、S_INVALID_KEY_FORMAT
1.8.6からこの

 frontends/php/api/classes/class.citemkey.php

が追加されているのですが、恐らく、その時点から日本語を含んだ
文字列を入力できなくなっていたと思われます。

現在テスト中の1.8.8でも、pre-zabbix-1.8.9rc1.x-22196.tar.gz
でも同様の症状です。

あと、strlen()で値が小さいのはmbstringでオーバーライドしてい
るからだと思います。
@rebine さんも書かれていましたが、これが原因で、処理はバイト
単位で処理するように書かれているため、オーバーライドされた
strlen()の文字数との不一致により、入力されたキーの値の最後まで
処理されず、入力されたフォーマットが正しくないと判定されてい
ます。

そこで、class.citemkey.php内のstrlen()を利用している処理を
<code>
$this->keyByteCnt = strlen($this->key);
</code>
から
<code>
$this->keyByteCnt = strlen(bin2hex($this->key)) / 2;
</code>
と修正することで、バイト単位で最後の文字まで処理できるように
なります。

参考にさせて頂いた情報のURL:
 http://zombiebook.seesaa.net/article/33192046.html

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー kodai の写真

ZBX-4218としてこの問題が報告されたので、以降はこちらでステータスを確認できます。
https://support.zabbix.com/browse/ZBX-4218