アイテムのキーに日本語入力不可(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 - 投稿数: 1341
ZBX-4218としてこの問題が報告されたので、以降はこちらでステータスを確認できます。
https://support.zabbix.com/browse/ZBX-4218