php 8.1 et joomla 4.3.4 deprecated sur libraries/src/document/document.php

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • php 8.1 et joomla 4.3.4 deprecated sur libraries/src/document/document.php

    Bonjour,
    sur plusieurs sites suite à mise à jour de joomla 4.3.4 et passage en php 8.1 (les extensions ont aussi été mises à jour) j'ai des notices sur beaucoup de pages de mon frontend :
    Deprecated: Automatic conversion of false to array is deprecated in /home/retmastr/public_html/nouveau-site/libraries/src/Document/Document.php on line 514

    Deprecated: Automatic conversion of false to array is deprecated in /home/retmastr/public_html/nouveau-site/libraries/src/Document/Document.php on line 613
    bien sur si je reviens en 8.0 ces notices disparaissent...
    j'ai noté également que dans chaque page où je fais appel au plugin {up} pour afficher des pdf il n'y avait pas ces deprecated...
    Bien sur je peux diminuer le niveau d'affichage des erreurs vers "simple" et on ne voit rien...
    Est ce que cela évoque quelque chose à certains et y a t'il moyen d'échapper à ça sans attendre une future mise à jour.
    D'avance, merci pour vos réponses.
    jeanluc.ferre

  • #2
    Bonjour Jean Luc,

    Mettre le niveau d'erreurs à "simple" permet de cacher ces erreurs, cependant, lorsque vous passerez en PHP 8.2 ou suivant, cela provoquera des erreurs qui planteront votre site.

    Pour déterminer quelle extension appelle Document.php avec des paramètres incorrects, il faut mettre votre site en mode debug : voir https://kb.joomla.fr/procedures/debu...-developpement

    Pour info, sur la page KB fournie, on parle du mode "développement" qui a été retiré en Joomla 4, le mode "maximum" fait l'affaire.

    N'hésitez pas à nous fournir une copie écran si les messages affichés vous paraissent incompréhensibles.

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Bonjour,
      Merci de votre réponse...
      En fait j'ai déjà activé le mode "debug" et "maximum" plusieurs fois...mais après je ne sais où regarder pour trouver trace de l'extension qui provoquerait le problème...si vous pouvez me dire où trouver ça ce serait super...(sur un forum j'ai cru lire qu'il fallait lire la "stack", mais je ne sais où on la trouve).
      je ne suis pas un spécialiste du code, mais ne resterait il pas des scories dans le "core joomla" dans le fichier "document.php"?
      Ce qui est étrange c'est qu'à chaque fois que dans une page je fais appel au plugin {up} pour afficher du php, alors les erreurs disparaissent dans cette page sur le frontend.
      Merci d'avance de vos réponses et à bientôt.
      jeanluc.ferre

      Commentaire


      • #4
        hello,
        d'après les erreurs signalées, j'ajouterai qu'une de tes extensions fait des appels incorrects à des fichiers js et css que document.php ne peut gérer. Il est vrai que trouver laquelle ou lesquelles n'est pas simple.
        Déjà, avec Chrome par exemple, clic droit Inspecter peut donner des pistes.

        Dans libraries/src/Document/Document.php​, au dessus des lignes suivantes, le texte commenté est assez explicite.
        Code PHP:
        if (!isset($attribs['type']) && !isset($attribs['mime'])) {
        $attribs['type'] = 'text/javascript';
        }
        ​ 
        .....
        Code PHP:
        if (!isset($attribs['type']) && !isset($attribs['mime'])) {
        $attribs['type'] = 'text/css';
        }
        ​ 
        Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

        Commentaire


        • #5
          Bonjour,

          Dans la mesure où ces alertes sont destinées aux développeurs, il me semble avoir lu plus d'une fois qu'il faut désactiver complètement le rapport d'erreurs sur les sites en production.

          Pour l'utilisateur lambda, propriétaire du site et encore plus simple visiteur, ces alertes n'ont aucun intérêt.

          Pour répondre à la question du décodage de la liste des fichiers obtenus quand on active le débogage et qu'on met le rapport d'erreurs au maximum : l'extension en cause est citée avec le chemin du fichier concerné au tout début de cette liste (stack ou pile).
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #6
            Bonsoir,
            Merci pour vos réponses...
            le seul problème c'est que je ne sais pas comment lire cette "pile".
            Dans la console du navigateur je trouve bien des erreurs mais je ne sais si elles ont un rapport avec notre problème...(l'une d'elle concerne un appel à un fichier system.css qui effectivement n'existe plus dans le répertoire /template/....).
            ça n'explique pas pourquoi l'utilisation du plugin {up} dans une page supprime les anomalies...
            Merci d'avance de m'indiquer comment lire cette pile.
            à bientôt
            jeanluc.ferre

            Commentaire


            • #7
              Bonjour,

              Si tu ne sais pas lire cette pile, fais une copie d'écran pour nous la soumettre.
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Bonsoir,
                Merci pour vos réponses​
                je joins ici 3 captures d'écran:
                1 pour les messages d'erreurs dans le frontend et l'aspect du panneau debug sur la page du frontend,
                1 pour les messages d'erreurs dans la console du navigateur,
                1 pour montrer que le fichier system.css est appelé dans le head de la page (mais en fait il n'existe pas...).
                mais avec ça, je ne vois pas comment je peux lire la pile...
                page frontend
                erreur console navigateur
                appel fichier systeme.css dand le head
                Merci d'avance de vous pencher sur mes problèmes...mais même en cherchant sur le net je n'ai pas trouvé comment lire la pile quand ce n'est pas une erreur fatale...
                Merci de vos réponses.
                jeanluc.ferre
                Fichiers joints

                Commentaire


                • #9
                  Bonjour,
                  En ce qui concerne les "deprecated" c'est le t3-framework lié à mon template purity 3 qui crée le problème : D:\xampp-php-8-1\htdocs\servel-loisirs\plugins\system\t3\includes\core\template.p hp
                  ce fichier : template.php fait des appels au méthodes addscript() et addstylesheet() :qui sont localisées sur : D:\xampp-php-8-1\htdocs\servel-loisirs\libraries\src\Document\Document.php. (voici ci-dessous les lignes de code concernées).
                  $this->addStylesheet($url, array(), current((array) $file->attributes())/*array('type' => 'text/css')*/);
                  $this->addScript($url, array(), current((array) $file->attributes())/*array('type' => 'javasript')*/);
                  ces méthodes renseignent actuellement des champs attributs nul ou inexistant.
                  les attributs que renvoient ces méthodes sont nuls, d'où l'erreur détectée dans document.php en php 8.1.
                  Si je valide les parties documentées actuellement (array('type'=>.....) dans les lignes de code cidessus de template.php il n'y a plus d'erreurs deprecated, c'est donc signe que les expressions : current((array) $file->attributes() ne renvoient pas de bonnes informations. je n'ai d'ailleurs pas bien compris ce que réalisaient ces expressions. Peut être pouvez vous me le dire?
                  J'ai regardé les suggestions de remplacer addscript() et addstylesheet() par $wa->registerAndUseScript(...); et $wa->registerAndUseStyle(...); mais je n'ai pas trouvé le code de ces dernières méthodes sur ma distribution...si vous pouviez me renseigner ce serait bien?
                  Autrement j'ai résolu les problèmes d'erreurs qui apparaissaient dans la console du navigateur.
                  Voilà le résultat de mes investigations sur un site de test en php 8.1 et joomla 4.3.4.
                  Si vous pouviez me renseigner sur les interrogations que j'ai soulevées je vous serai très reconnaissant.
                  jeanluc.ferre
                  D'avance merci.

                  Commentaire


                  • #10
                    Bonjour

                    Ton plugin T3 est-il dans sa dernière version 3.1.3 d'avril dernier ?
                    De toutes manières, je l'ai peut-être dit, dans un site de production on masque les erreurs qui sont faites pour que les développeurs des extensions les mettent à niveau.
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #11
                      bonjour,
                      Merci de vos réponses.
                      Oui mon t3.framework est à jour à la 3.1.3.
                      Maintenant je fais les manipulations sur un site de test avec xammp php 8.1 où j'ai transféré tout le contenu de mon site d'exploitation.
                      je sais que si je précise dans le fichier : "plugins\system\t3\includes\core\template.php" les attributs array('type' => 'javasript') ou array('type' => 'text/css') respectivement dans les appels des méthodes addscript() et addstylesheet() ça va marcher...
                      j'aimerai essayer les méthodes $wa->registerAndUseScript(...) et $wa->registerAndUseStyle(...) pour voir comment ça marche, même si je n'ai pas trouvé le code de définition de ces dernières...
                      Merci encore de vos contributions et à bientôt.
                      jeanluc.ferre

                      Commentaire


                      • #12
                        Bonsoir,
                        le problème est résolu...
                        j'ai légèrement patché le fichier: "plugins\system\t3\includes\core\template.php" conformément à la capture ci-jointe en rajoutant "array" avant le 3eme argument de l'appel des méthodes addscript et addstylesheet...conformément à la définition de ces méthodes dans le fichier : libraries\src\Document\Document.php.
                        Cliquez sur l'image pour l'afficher en taille normale

Nom : deprecated-addscript-addstylesheet.png 
Affichages : 130 
Taille : 69,7 Ko 
ID : 2055058
                        je pense que c'est un léger bug de "t3.framework".
                        merci à tous pour vos contributions et à bientôt.
                        jeanluc.ferre

                        Commentaire

                        Annonce

                        Réduire
                        Aucune annonce pour le moment.

                        Partenaire de l'association

                        Réduire

                        Hébergeur Web PlanetHoster
                        Travaille ...
                        X