Недавно я изменил мою версию PHP с 7.0 до 7.1 на моем сервере. При рассмотрении моих журналов ошибок я получаю следующую ошибку:Ошибка PHP: «Нечисловое число, встречающееся в ...»
AH01071: Got error 'PHP message: PHP Warning: A non-numeric value encountered in /width.php on line 74\nPHP
Код, на который влияет ниже. Строка 74 - это самая последняя строка в коде, которая воспроизводится ниже.
//
// Get settings.
//
$a = x_get_option('x_layout_site');
$b = x_get_option('x_layout_content');
$c = x_get_option('x_layout_site_width');
$d = x_get_option('x_layout_site_max_width');
$e = x_get_option('x_layout_content_width');
$f = x_get_option('x_layout_sidebar_width');
//
// Adjust settings.
//
$site_layout = ($a == '') ? 'full-width' : $a;
$content_layout = ($b == '') ? 'content-sidebar' : $b;
$site_width = ($c == '') ? 88/100 : $c/100;
$site_max_width = ($d == '') ? 1200 : $d;
$content_width = ($e == '') ? 72 - $m : $e - $m; // Line affected
Я прочитал о некорректно сформированном числовом значении, которое обнаружила ошибку, описанную в следующих местах. 1, 2, 3, 4 Выполнение нескольких поисковых запросов Google, похоже, что это связано с тем, как PHP 7.1 имеет дело с нечисловыми вычислениями, как указано здесь. 5 Рекомендация заключается в улавливании потенциального значения «auto» в $ content-width и преобразовании его в ноль. Я попытался сделать такое улавливание ошибок следующими изменениями кода:
//
// Adjust settings.
//
$site_layout = ($a == '') ? 'full-width' : $a;
$content_layout = ($b == '') ? 'content-sidebar' : $b;
$site_width = ($c == '') ? 88/100 : $c/100;
$site_max_width = ($d == '') ? 1200 : $d;
if ($m=='auto') {$m=0;} // set auto to 0
$content_width = ($e == '') ? 72 - $m : $e - $m; // Line affected
Однако ошибка, кажется, продолжается. Другое предложение, которое было сделано, было подавление PHP Warnings, но поскольку я в процессе отладки другого кода, я не хочу этого делать. Я также не думаю, что это хорошая практика.
Для тех, кто заинтересован в том, где больше тела кода, это тема «X» для WordPress. Ошибка возникает только при конвертации с PHP 7.0 на 7.1.
Оцените любое понимание этого исправления. Благодарю.
У меня такая же ошибка. Удалось ли вам это исправить? – Reyske