1 (edited by belelectroteam 2020.09.30 12:52)

Topic: Ошибка движка 1.4.5 на PHP 7.3

Привет!
Ставим чистый движок 1.4.5 и версию PHP 7.3.
Правим .htaccess и config.php (он появится только после установки) так, чтобы все ошибки сыпались в файл PHP_errors.log.
Видим там периодически ошибку "PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /.../functions.php on line 1818". Открываем файл functions.php в папке include и видим в районе 1818 стоки:

Spoiler
switch (substr($id_data, 0, 1))
      {
         case 'f': $type = 'forums'; break;
         case 't': $type = 'topics'; break;
         default: continue;
      }

Искомая строка 1818 это: default: continue;

Что за проблема?
Начиная с PHP 7.3, если интерпретатор заметит "continue" без цифры 2 внутри "switch" внутри цикла он выдаст Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?
В документации пишут так:
Обратите внимание, что в отличие от некоторых других языков, оператор "continue" применяется в конструкциях "switch" и действует подобно оператору "break". Если у вас конструкция "switch" находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте "continue 2".
Первоисточник тут: тыц.
Что делаем?
Правим строку 1818 в function.php:

Spoiler
switch (substr($id_data, 0, 1))
      {
         case 'f': $type = 'forums'; break;
         case 't': $type = 'topics'; break;
         default: continue 2;
      }

Больше ошибка не появляется.  PunBB_INFO_ICQ/blum

3