Как исправить - PHP Warning: Division by zero?

В управлении игровым сервером (SourceBans++ 1.6.3) есть такая ошибка (точнее в журналах поддомена, на котором он находится):

[Fri May 22 09:29:30.770872 2020] [php7:warn] [pid 10749] [client ip:port] PHP Warning: Division by zero in /var/www/www-userroot/data/www/bans.mysite.ru/includes/smarty/plugins/function.math.php(94) : eval()'d code on line 1, referer: iphost

Вот строка, которую он "жалуется":

eval("\$smarty_math_result = " . $equation . ";");

Вот ссылка полный код https://pastebin.com/d6WShcc1

Можно это исправить?


Ответы (1 шт):

Автор решения: teran

Ошибка внутри функций smarty вызвана неверными входными данными. Вообще применение подобных функций тут весьма избыточно и излишне усложняет код шаблона (вообще не представляю зачем в смарти в принципе такой функцонал).

Расчитайте нужные значения в шаблоне.

{$nc = $smarty.now - $ban_times[$index].c}
{$ec = $ban_times[$index].e - $smarty.now}
{$w = $ec ? ($nc/$ec/100) : "какое-то значение"}
<div class="progress-bar bg-warning progress-bar-striped progress-bar-animated"
     role="progressbar" aria-width="{$w}" >

Вообще не особо похоже, что ошибка в этом шаблоне, поскольку в знаменателе сравнивается $smarty.now, то есть текущая метка времени. и вероятность, что она совпадает не велика. так что я бы на вашем мсте избавился бы вообще от всех включений {math ...} из шаблонов.

и на случай, если у вас там все это дело выводится в виде

{foreach $ban_times as $index => $v}

то в формулах можно использовать {$v.c}, {$v.e} а не {$ban_times[$index]}

→ Ссылка