zabbixでPHPの警告が出る場合の対処

■環境
zabbix 3.2
PHP 7.1

PHP7.1でzabbixを動かすと、以下の警告が出ました。

A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpMemoryLimit() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpPostMaxSize() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpUploadMaxFilesize() → str2mem() in include/func.inc.php:410]

警告が出ている箇所は以下のようになっています。
[/usr/share/zabbix/include/func.inc.php]

 394 /**
 395  * Converts strings like 2M or 5k to bytes
 396  *
 397  * @param string $val
 398  *
 399  * @return int
 400  */
 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }

この引数の「$val」には『256M』のように単位付きの数字が入ってくるようで、
それを『$val *= 1024』と数字のように扱っているので警告が出ているようです。
(警告は出ているが、処理自体は正常に行なわれている)

解決策は色々あると思いますが、とりあえず以下のように修正したら
警告は表示されなくなりました。(404行目を追加しています)

 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404         $val = intval($val);
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください