Comment puis-je corriger l'erreur fatale RevSlider dans le tableau de bord après la mise à niveau vers PHP 7? [fermé]

36

Je peux accéder à la partie publique du site. Mais le tableau de bord apparaît vide.

Le journal montre une erreur pointant vers le plugin 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

Voici la trace complète:

#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
Chapman Atwell
la source
1
RevSlider, AFAICT, est un plugin spécifique à Wordpress. J'ai essayé revslider.stackexchange.com , mais c'est 404s pour moi.
Chapman Atwell
3
Cela pourrait ne pas être approprié ici, mais m'a été très utile car cette erreur a rendu l'accès à l'administrateur complètement inaccessible après une mise à niveau de PHP, et le corriger n'était pas une question de débogage de ce qui s'est passé, mais d'application du correctif à partir de la réponse acceptée.
Antti Haapala

Réponses:

68

J'ai pu corriger l'erreur en corrigeant le plug-in RevSlider sur mon serveur comme indiqué ici .

Dans revslider/includes/framework/base-admin.class.php, j'ai changé la ligne suivante (l. 21 de ma version) de:

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

à:

private static $arrMetaBoxes = array();    //option boxes that will be added to post
Chapman Atwell
la source
8
Vous pouvez utiliser à la []place de array().
fuxia
A travaillé pour moi en 2018!
eyal_katz
2
Bon travail! Je viens de passer à php 7.2 sur mon serveur et cela m'a été utile!
Spencer Bigum
Salut merci pour cette réponse! Dans mon cas, j'utilisais le modèle wordpress de churchHope et j'obtenais une erreur sur /churchope/lib/revslider/inc_php/framework/base_admin.class.php:72 - corrigé cela en changeant le statique $ arrMetaBoxes = ""; à $ arrMetaBoxes statiques privés = array ();
Paul Preibisch
Je te dois une bière. +1 et pour l'explication, en php7, vous avez des restrictions plus strictes sur les types, donc une chaîne vide ne peut pas avoir quelque chose en annexe tout en la traitant comme un tableau. Comme @fuxia mentionné []fonctionne également ici bien et est plus Pythonish.
Ligemer