Erreur avec php 8.0 sur une installation J4

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

  • [RÉGLÉ] Erreur avec php 8.0 sur une installation J4

    Bonjour,

    Je viens de migrer un site sur Joomla 4.1.5.
    Aucun souci, si ce n'est lorsque je passe le serveur sur php 8 (actuellement en 7.4, tout est OK).

    Là, plantage total. J'ai activé le debug et j'ai tout un tas d'erreur de connexion à mysql.
    En tête de page, j'ai mysqli object is not fully initialized

    Puis plein de ligne dont je ne comprend pas grang chose. Je pensait y voir le chemin d'un vieux plugin qui embête, mais non...

    Un peu d'aide serait la bienvenue.
    “Un problème sans solution est un problème mal posé." - Albert Einstein
    "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

  • #2
    Bonjour,

    Ce n'est pas une erreur de version de php mais plutôt de MySQL.
    Vérifier dans un premier temps si la version de MySQL est à jour et respecte les prés-requis :
    https://downloads.joomla.org/fr/tech...equirements-fr

    Certaines tables dans la base de données provenant d'extensions tierces peuvent également devenir obsolètes.
    Les requêtes provoquant des erreurs entre les versions de php.
    Il faudrait identifier les extensions, desactiver temporairement chaque extension tierce une par une et vérifier en basculant en php 8
    jusqu'à trouver le coupable. Autre solution, le debug affiche également la liste des requêtes donc forcément on peut le trouver plus facilement.

    Oups! Préalablement, avoir effectué les sauvegardes et les mises à jour me semblent indispensables, j'en oublie presque de les évoquer !


    Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

    Commentaire


    • #3
      Bonjour,

      Bon, merci pour la réponse. Je viens de mettre le site sur un autre hébergement (mais sur le même serveur cloud), histoire de tester et pas tout faire planter en permanence.
      Et là, ho surprise, ça marche en php 8.

      Donc j'y comprend plus rien. J'ai fait un backup et restore avec Akeeba, standard quoi.

      J'ai aussi re-vérifier sur mon site en prod, et ça plante toujours.

      Concernant la version de BDD, je suis en MariaDB : 10.4 sur les 2 hébergements.
      “Un problème sans solution est un problème mal posé." - Albert Einstein
      "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

      Commentaire


      • #4
        EDIT :

        Bon je vais pas chercher toute la journée. J'ai donc simplement changer mon NDD d'hébergement pour le router sur le site qui fonctionne.
        J'aurais pas trouvé le problème, mais il est régler d'une autre manière


        “Un problème sans solution est un problème mal posé." - Albert Einstein
        "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

        Commentaire


        • #5
          Bonjour,

          As-tu accès aux paramétrages de PHP, notamment des extensions, pour vérifier si mysqli est activé ?
          "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
            Hello,
            Ben là je n'ai plus l'hébergement en question... Mais j'y penserais si le problème se reproduit. C'est la première fois que ça me fait ça alors que j'ai déjà passé pas mal de sites en J4 et php 8 sans souci, sur le même serveur cloud.

            Ceci dit, le site en question est un très vieux site. Je veux dire qu'il existe depuis plus de 10 ans.
            “Un problème sans solution est un problème mal posé." - Albert Einstein
            "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

            Commentaire


            • #7
              Hello,

              Je viens donner un retour sur ce problème. Nous avons trouvé la source, vu que j'ai à nouveau eu le souci avec d'autres sites.

              En fait, lorsque je monte un site en Joomla 4 qui est en Joomla 3, je crée un sous dossier dans le site J3.
              Et apparemment le fait d'avoir un site J4 dans une architecture de site J3 pose problème lors du passage de php 8.

              L'hébergeur m'a expliqué que de ce fait, cela pouvait créer un conflit puisqu'ils utilisent tous les deux le même php-fpm (mais ça ça me parle pas).

              Ce qui explique que lorsque je changeais le site d'hébergement, cela fonctionnait, car je le mettais tout seul en J4.
              “Un problème sans solution est un problème mal posé." - Albert Einstein
              "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

              Commentaire


              • #8
                Re re,

                Je pense avoir la solution !

                Et la solution complète. Je ne pense pas que cela soit le fait d'avoir un Joomla 4 sur un 3, mais à la façon de le faire.

                Je veux dire, pour faire mes tests sur un Joomla 4, je peux soit prendre le J3, copier les dossiers et coller dans un sous dossier, puis simplement changer les infos dans le fichier configuration, avec les données de connexion sur une nouvella BDD, ou alors faire un backup, puis remonter le backup avec Akeeba et Kickstart.

                Pour la seconde option, cela recrée un fichier configuration. Et c'est à mon avis là, la seule différence. Car je viens de passer un autre site en J4 php 8 sans souci.
                Je n'ai plus les sites en exemples pour vérifier cette théorie, mais je suis quasiment certain que c'est le fichier configuration, qui est différent sur J4 et qui pose problème, si on récupère celui d'un J3.

                Ceux que je fais en backup / restore fonctionnent, et ceux que je fais en copier / coller ne fonctionnent pas, car il garde le fichier config de J3...
                “Un problème sans solution est un problème mal posé." - Albert Einstein
                "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

                Commentaire


                • #9
                  Bonjour,

                  Je ne sais pas comment tu procèdes vraiment, mais quelle que soit la méthode, manuelle ou avec Akeeba backup, tu démarreras toujours avec un fichier de configuration J3, et la migration vers J4 le mettra à jour.
                  Lorsqu'on fait une copie manuelle, il faut non seulement modifier les informations d'accès à la base de données, mais aussi cettes des répertoires logs et tmp, et s'assurer que la variable live_site est vierge (et probablement d'autres vérifications/corrections car il y a bien longtemps que je n'ai pas fait de transfert manuel).
                  Cela dit, personnellement je ne fais jamais de tests sur un site placé dans un sous-dossier d'un site existant, mais soit sur un serveur de développement, soit sur le serveur du client en y créant un sous-domaine, le site étant totalement isolé du site de production.
                  "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


                  • #10
                    Hello,

                    Oui, je te remercie. Effectivement, à l'avenir, je ferais également comme ça, en montant le site J4 sur un sous domaine, tout seul. Cela évitera ce genre de surprises.
                    “Un problème sans solution est un problème mal posé." - Albert Einstein
                    "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

                    Commentaire


                    • #11
                      Bonsoir,

                      le problème vient du fait que dans le fichier de configuration d'origine le serveur bd est localhost
                      Il faut donc remplacer
                      public $host = 'localhost';
                      par
                      public $host = 'le serveur hôte de chacune des bases de données ';
                      et le passage en php 8 se fait sans soucis

                      Bon weekend

                      Commentaire


                      • #12
                        Hello,

                        Ha tu as raison. Et je ne l'avais pas vu celle là !!! Elle était pourtant simple...

                        Car en fait, effectivement à l'époque, chez Infomaniak, c'était localhost. Puis ensuite il fallait indiqué le nom du serveur. Ce qui explique que pour mes "vieux sites" j'ai ce problème, du coup.

                        Je viens de vérifier sur un ancien site, qui tourne sur J3 et c'est bien localhost. Et donc le fait de la passer en J4, cela ne fonctionne plus, car ce paramètre ne se met pas à jour, forcément.
                        Dernière édition par thefbi à 24/09/2022, 07h43
                        “Un problème sans solution est un problème mal posé." - Albert Einstein
                        "La sagesse, c’est d’avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit." - Oscar Wilde

                        Commentaire


                        • #13
                          Bonjour,

                          Le lien entre localhost et le véritable nom du serveur n'est pas géré par Joomla! mais par le serveur lui-même chez l'hébergeur, il n'y a donc pas de raison, sauf paramétrage particulier du serveur sous PHP 8, pour que cette redirection ne fonctionne plus dès passage en PHP 8 et/ou Joomla! 4.
                          "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

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X