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 }
関連する記事
- 修正したファイルだけPHP_CodeSnifferでチェックする
- Google Analyticsから直近のページ閲覧数を取得する
- MacにPHP7.2をインストールする
- 【PHP】strtotimeの罠
- CakePHP2のローカル検証環境構築
- 【Linux Mint】PHP7.1のインストール
- Visual Studio CodeでPHP開発環境構築
- Atom IDEの環境構築(PHP、Go)
- 【Laravel】migrateで『Class 'CreateFoooTable' not found』が発生する
- 【PHP】Laravel5でカスタムバリデーションを追加する
- PHPExcelの使い方メモ
- brewインストールでphp-mcryptがインストールできない
- 【PHP】Eclipseでカーソルがある変数のハイライトを変更する
- mysql系の関数がPHP7でエラーになる場合の対応
- 【FuelPHP】PHP7対応版へのアップデート
- 【CentOS】php7をyumインストールする
- 【CentOS】ComposerにGitHubのアクセストークンを設定する
- PHPで文字化けが直らない場合の対処