Dotclear

Vous n'êtes pas identifié(e).

Annonce

#1 2021-02-15 18:10:03

nico
Membre
Inscription : 2014-12-13
Site Web

Widgets en PHP8

Bonjour,

Le passage en PHP 8.0.1 fait planter le plugin "Widgets" avec l'erreur suivante:

[15-Feb-2021 17:47:25 UTC] PHP Fatal error:  Uncaught ValueError: func_get_arg(): Argument #1 ($position) must be less than the number of the arguments passed to the currently executed function in /.../dotclear/plugins/widgets/class.widgets.php:282
Stack trace:
#0 /.../dotclear/plugins/widgets/class.widgets.php(282): func_get_arg(4)
#1 /.../dotclear/plugins/widgets/class.widgets.php(387): dcWidget->setting('title', 'Titre (optionne...', 'Recherche')
#2 /.../dotclear/plugins/widgets/_default_widgets.php(22): dcWidgetExt->addTitle('Recherche')
#3 /.../dotclear/plugins/widgets/_public.php(14): include('/.../dotcl...')
#4 /.../dotclear/inc/core/class.dc.modules.php(731): require('/.../dotcl...')
#5 /.../dotclear/inc/core/class.dc.modules.php(701): dcModules->loadModuleFile('/.../dotcl...')
#6 /.../dotclear/inc/core/class.dc.modules.php(244): dcModules->loadNsFile('widgets', 'public')
#7 /.../dotclear/inc/public/prepend.php(90): dcModules->loadModules('/.../dotcl...', 'public', 'en')
#8 /.../dotclear/index.php(18): require('/home/www/dotcl...')
#9 {main}
  thrown in /.../dotclear/plugins/widgets/class.widgets.php on line 282

En commentant les lignes en question (je suis pas un pro du dev...), cela fonctionne, il y a juste un "0" qui s'affiche sur certains widgets:

    public function setting($name, $title, $value, $type = 'text')
    {
        if ($type == 'combo' || $type == 'radio') {
            $options = @func_get_arg(4);
            if (!is_array($options)) {
                return false;
            }
            // If any, the 5th argument should be an array (key → value) of opts
            //$opts = @func_get_arg(5);
        } else {
            // If any, the 4th argument should be an array (key → value) of opts
            //$opts = @func_get_arg(4);
        }

Une idée ?

Hors ligne

#2 2021-02-15 23:02:13

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Widgets en PHP8

dc pas encore compatible php8... donc faut attendre.

En ligne

#3 2021-02-16 06:59:25

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Widgets en PHP8

La version de développement a corrigé ce problème, il faudra attendre la v 2.19 pour une mise à jour.

Si tu veux bricoler, tu peux récupérer le fichier /dotclear/plugins/widgets/class.widgets.php corrigé dans son archive

Il y a aussi un problème pour la génération des miniatures d'images avec php8, là encore corrigé dans la v 2.19

Hors ligne

#4 2021-02-16 07:59:12

nico
Membre
Inscription : 2014-12-13
Site Web

Re : Widgets en PHP8

ah mais c'est génial ça, merci Philippe ! je vais récupérer le fichier en question, ce sera mieux que mon patch tout dégueulasse :)

Hors ligne

#5 2021-02-16 17:20:27

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Widgets en PHP8

Si tu veux rester en PHP8, il te faudra aussi récupérer le fichier /dotclear/inc/libs/clearbricks/image/class.image.tools.php, ce qui permettra la   génération des miniatures quand on les insère dans la médiathèque

Hors ligne

#6 2021-02-16 22:10:56

nico
Membre
Inscription : 2014-12-13
Site Web

Re : Widgets en PHP8

je t'avoue que pour le coup j'étais passé complètement à côté de ce bug, et pourtant ça fait déjà plusieurs mois que je suis passé (salement) en PHP8. ça doit être mon côté myope. et puis c'est moins flagrant que celui des widgets qui provoquait carrément une 500 :)

quoiqu'il en soit pour les miniatures ça a du être corrigé avec la 2.18.1, car ça remarche maintenant et il n'y a pas de différence de fichier avec les nightlies que tu m'as indiqué ni avec la version Github.

merci encore pour ton aide !

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map