経緯
cacti で advanced ping を使って 死活監視をしようとしたところ全くグラフが描写されなかった。
そこで調べてみました。
環境
- Ubuntu16.04
- php version 7.0
- cacti version 0.8.8f
調査
$ sudo php /usr/share/cacti/site/scripts/ss_fping.php 127.0.0.1
PHP Fatal error: Uncaught Error: Call to undefined function split() in /usr/share/cacti/site/scripts/ss_fping.php:26
Stack trace:
# 0 /usr/share/cacti/site/scripts/ss_fping.php(20): ss_fping('127.0.0.1')
# 1 {main}
thrown in /usr/share/cacti/site/scripts/ss_fping.php on line 26
原因
split()関数が呼び出せていないみたい。
調べているとphp 7.0 からsplit()は削除されているみたい。
代わりにexplode()関数を使う。
対応
26 //list($micro,$seconds) = split(" ", microtime()); // 26行目をコピーしてコメントアウト
27 list($micro,$seconds) = explode(" ", microtime()); // split をexplodeに変更
114 //list($micro,$seconds) = split(" ", microtime());
115 list($micro,$seconds) = explode(" ", microtime());
結果
/usr/share/cacti/site/scripts$ sudo php ss_fping.php 127.0.0.1
min:0.0140 avg:0.0175 max:0.0300 dev:0.0057 loss:0.0000
でけた!