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

36

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

Журнал показывает ошибку, указывающую на плагин 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
Чепмен Этвелл
источник
1
RevSlider, AFAICT, это плагин, специфичный для Wordpress. Я попробовал revslider.stackexchange.com , но это 404 для меня.
Чепмен Этвелл
3
Это может быть не совсем уместно, но для меня это было наиболее полезно, так как эта ошибка делала невозможным доступ к администратору после обновления PHP, и исправление его было связано не с отладкой произошедшего, а с применением исправления из принятого ответа.
Антти Хаапала

Ответы:

68

Мне удалось исправить ошибку, исправив плагин RevSlider на моем сервере, как описано здесь .

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

private static $arrMetaBoxes = '';         //option boxes that will be added to post

чтобы:

private static $arrMetaBoxes = array();    //option boxes that will be added to post
Чепмен Этвелл
источник
8
Вы можете использовать []вместо array().
fuxia
Работал на меня в 2018 году!
eyal_katz
2
Отличная работа! Просто обновился до php 7.2 на моем сервере, и это пригодилось!
Спенсер Бигум
Привет, спасибо за этот ответ! В моем случае я использовал шаблон wordpress churchHope и получал сообщение об ошибке на /churchope/lib/revslider/inc_php/framework/base_admin.class.php:72 - исправил это, изменив частный статический $ arrMetaBoxes = ""; в приватную статическую $ arrMetaBoxes = array ();
Пол Прейбиш
Я должен тебе пиво. +1 и для объяснения, в php7 у вас более жесткие ограничения на типы, поэтому пустая строка не может быть добавлена ​​к чему-либо, обрабатывая ее как массив. Как упомянуто @fuxia, []здесь тоже хорошо работает и более Pythonish.
Лигемер