Как исправить фатальную ошибку RevSlider в админ-панели после обновления до PHP 7?

15 мар. 2017 г., 19:45:52
Просмотры: 69.7K
Голосов: 55

Я могу получить доступ к публичной части сайта. Но админ-панель отображается пустой.

Лог показывает ошибку, указывающую на плагин RevSlider:

PHP Fatal error:  Uncaught Error: [] operator not supported for strings in /var/www/html/wp-content/plugins/revslider/includes/framework/base-admin.class.php:141

Вот полный стек ошибки:

#0 /var/www/html/wp-content/plugins/revslider/admin/revslider-admin.class.php(1143): RevSliderBaseAdmin::addMetaBox('Revolution Slid...', '', Array, NULL)
#1 /var/www/html/wp-content/plugins/revslider/admin/revslider-admin.class.php(145): RevSliderAdmin->addSliderMetaBox()
#2 /var/www/html/wp-content/plugins/revslider/admin/revslider-admin.class.php(87): RevSliderAdmin->init()
#3 /var/www/html/wp-content/plugins/revslider/revslider.php(327): RevSliderAdmin->__construct('/var/www/html/w...')
#4 /var/www/html/wp-settings.php(304): include_once('/var/www/html/w...')
#5 /var/www/html/wp-config.php(81): require_once('/var/www/html/w...')
#6 /var/www/html/wp-load.php(37): require_once('/var/www/html/w...')
#7 /var/www/html/wp-admin/admin-ajax.php(22): require_once('/var/www/html/w...')
#8 {main}
  thrown in /var/www/html/wp-content/plugins/revslider/includes/framework/base-admin.class.php on line 141, referer: https://192.168.16.18/wp-admin/plugins.php
2
Комментарии

RevSlider, насколько я понимаю, это плагин, специфичный для WordPress. Я попробовал обратиться на https://revslider.stackexchange.com/, но у меня выдает 404 ошибку.

Chapman Atwell Chapman Atwell
12 мая 2018 г. 02:18:47

Возможно, это не совсем уместно здесь, но было очень полезно для меня, так как эта ошибка делала админку полностью недоступной после обновления PHP, и исправление заключалось не в отладке происходящего, а просто в применении горячего исправления из принятого ответа.

Antti Haapala Antti Haapala
21 дек. 2018 г. 17:09:09
Все ответы на вопрос 1
9
104

Мне удалось исправить ошибку, применив временное исправление (hotfix) для плагина RevSlider на моем сервере, как описано в этой документации.

В файле revslider/includes/framework/base-admin.class.php я изменил следующую строку (строка 21 в моей версии) с:

private static $arrMetaBoxes = '';         //метабоксы, которые будут добавлены к записи

на:

private static $arrMetaBoxes = array();    //метабоксы, которые будут добавлены к записи
15 мар. 2017 г. 19:45:52
Комментарии

Вы можете использовать [] вместо array().

fuxia fuxia
15 мар. 2017 г. 19:49:45

Сработало у меня в 2018 году!

eyal_katz eyal_katz
20 сент. 2018 г. 01:57:38

Отличная работа! Только что обновил сервер до php 7.2, и это очень пригодилось!

Spencer Bigum Spencer Bigum
23 дек. 2018 г. 01:44:07

Привет, спасибо за ответ! В моем случае я использовал шаблон WordPress churchHope и получал ошибку в /churchope/lib/revslider/inc_php/framework/base_admin.class.php:72 - исправил это, изменив private static $arrMetaBoxes = ""; на private static $arrMetaBoxes = array();

Paul Preibisch Paul Preibisch
11 апр. 2019 г. 21:42:32

Я должен тебе пиво. +1 за объяснение - в php7 более строгие ограничения на типы, поэтому к пустой строке нельзя что-то добавлять, обращаясь с ней как с массивом. Как упомянул @fuxia, [] тоже отлично работает здесь и выглядит более по-питоновски.

akahunahi akahunahi
23 мая 2019 г. 08:46:25

в моем случае revslider находился по пути: my_url/wp-content/plugins/revslider/inc_php/framework

Alessandro Mattiuzzi Alessandro Mattiuzzi
6 авг. 2019 г. 16:57:17

Ноябрь 2019, это работает!!!

Daniel M Sánchez Daniel M Sánchez
14 нояб. 2019 г. 22:23:17

Мы столкнулись с этой ошибкой сегодня при переходе на PHP 7.3, и это исправление сработало идеально. Как упомянул @AlessandroMattiuzzi, путь, похоже, изменился в последних версиях плагина.

bwright bwright
24 мар. 2020 г. 12:06:14

2021 год, на PHP 7.4 этот патч всё ещё работает! Спасибо!

xjlin0 xjlin0
17 янв. 2021 г. 02:00:53
Показать остальные 4 комментариев