aide prestashop PhenixSuite Help
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    • S'inscrire
    • Se connecter

    Images produit qui disparaissent

    Planifier Épinglé Verrouillé Déplacé Bugs & Améliorations
    30 Messages 4 Publieurs 1.3k Vues 4 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • eoliaE Hors-ligne
      eolia
      dernière édition par

      Le problème est sur la fonction Tools::cleanDirectory($this->image_dir.$this->getImgFolder()); rien d'autre et c'est en cours de résolution.
      Pour le bouton "Effacer les images" (actif par défaut) si celui-ci n'est pas actif il ne se passera rien pour les produits lorsque vous cliquerez sur "Regénérer", seules les miniatures manquantes seront générées lorsqu'elles seront appelées.

      Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

      1 réponse Dernière réponse Répondre Citer 0
      • eoliaE Hors-ligne
        eolia
        dernière édition par

        commentez la ligne 665 de Image.php ( //Tools::cleanDirectory($this->image_dir.$this->getImgFolder()); ) en attendant le patch. Les répertoires vides ne seront pas nettoyés mais ce n'est pas grave pour l'instant.

        Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

        C 1 réponse Dernière réponse Répondre Citer 0
        • C Hors-ligne
          camille
          dernière édition par

          Merci Eolia,
          J'attends donc la résolution 🙂 en attendant l'override évite de nouvelles disparitions.
          Me trompe-je ou, d'habitude, il n'est pas activé par défaut ? Justement pour éviter de tout régénérer si on oublie de le désactiver pour quelques vignettes manquantes ?
          Et est-ce que le script automatique prend en compte cela et donc régénèrerait toutes les vignettes quand on ajoute une image ? Car les erreurs 500 ont quand même l'air d'être assez reliées aux moments où on ajoute des images ...

          1 réponse Dernière réponse Répondre Citer 0
          • eoliaE Hors-ligne
            eolia
            dernière édition par

            Je me répète mais Phenix ne regénère jamais toutes les miniatures (ce qui provoquait souvent des erreurs 500).
            Si vous cliquez sur regénérer en ayant coché "supprimer les images" seules les miniatures sont supprimées. L'image de base jpg reste seule.

            Lorsque vous naviguerez sur le FO les images manquantes seront regénérées à la volée pour le ou les produits en cours de visualisation.

            Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

            C 1 réponse Dernière réponse Répondre Citer 0
            • C Hors-ligne
              camille @eolia
              dernière édition par

              @eolia merci, je vais tester ça sur le dev

              1 réponse Dernière réponse Répondre Citer 0
              • C Hors-ligne
                camille @eolia
                dernière édition par

                @eolia ok merci, je voulais juste m'en assurer car je suis toutes les pistes qui pourraient m'expliquer la fréquence des erreurs 500, avec perte de connexion à la bdd. Les logs sont absolument silencieux là-dessus...

                1 réponse Dernière réponse Répondre Citer 0
                • eoliaE Hors-ligne
                  eolia
                  dernière édition par

                  Function à remplacer dans Image.php:

                      public function deleteImage($force_delete = false)
                      {
                          if(!$this->id) {
                              return false;
                          }
                  
                          $parent_dir = $this->image_dir.$this->getImgFolder();
                          if(Configuration::get('PS_LEGACY_IMAGES')) {
                              $files_to_delete = array();
                              // Delete base image
                              if(file_exists($this->image_dir.$this->getExistingImgPath().'.'.$this->image_format)) {
                                  @unlink($this->image_dir.$this->getExistingImgPath().'.'.$this->image_format);
                              }
                              // Delete auto-generated images
                              $image_types = ImageType::getImagesTypes();
                              foreach($image_types as $image_type) {
                                  $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].'.'.$this->image_format;
                                  $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].'.webp';
                                  if(Configuration::get('WATERMARK_HASH')) {
                                      $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].'-'.Configuration::get('WATERMARK_HASH').'.'.$this->image_format;
                                      $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].'-'.Configuration::get('WATERMARK_HASH').'.webp';
                                  }
                              }
                              // Delete watermark image
                              $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-watermark.'.$this->image_format;
                              $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-watermark.webp';
                              // Delete index.php
                              $files_to_delete[] = $parent_dir.'index.php';
                              foreach ($files_to_delete as $file) {
                                  if (file_exists($file) && !@unlink($file)) {
                                      return false;
                                  }
                              }
                          }
                          else {
                              if(is_dir($parent_dir)) {
                                  $files = glob($parent_dir.'*');
                                  foreach($files as $file) {
                                      if(is_file($file)) {
                                          unlink($file);
                                      }
                                  }
                              }
                          }
                  
                          self::deleteTempImages($this->id_product);
                  
                          // Delete the image folder if empty
                          if(is_dir($parent_dir)) {
                              $delete_folder = true;
                              foreach(scandir($parent_dir) as $file) {
                                  if($file != '.' && $file != '..') {
                                      $delete_folder = false;
                                      file_put_contents($parent_dir.'index.php', Tools::getDefaultIndexContent($path));
                                      break;
                                  }
                              }
                          }
                          if(isset($delete_folder) && $delete_folder) {
                              @rmdir($this->image_dir.$this->getImgFolder());
                          }
                  
                          return true;
                      }
                  

                  Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                  1 réponse Dernière réponse Répondre Citer 0
                  • doekiaD Hors-ligne
                    doekia @camille
                    dernière édition par

                    @camille Bravo pour nous avoir donné les pistes d'un problème dont nous n'arrivions pas à reproduire le scénario. @Eolia vous a donné un correctif et nous allons rendre celui-ci encore plus robuste sur la version à venir. Si je puis me permettre, évitez de penser qu'un outils comme ChatGPT peut vous sauver si vous n'avez pas suffisamment de connaissance sur un sujet. Les IA sont impressionnante mais quasiment exclusivement sur des sujets des milliers/millions de fois vu et revu dans leurs apprentissages. En dehors de ces cas, les IA font 60% bien 30% bof et 10% BS.
                    Encore un fois ce n'est pas une critique, juste qu'il faut être conscient du problème. Des outils très puissant mais qui requièrent une connaissance amont pour remettre en cause leurs "output"

                    Encore merci d'avoir ciblé le problème avec vos tests clairement documentés.

                    https://store.enter-solutions.com modules, support et assistance.

                    Je précise que je n'ai pas fait ni Paco-Rabane, ni Poudlard 2ème langue - je ne suis ni devin, ni magicien.
                    Fournissez un maximum d'information dans vos questions, version exacte du coeur et de vos modules, si besoin un peu d'histoire sur votre shop et vos recherches, les modules tiers installés, ...

                    Si mon intervention vous a aidé, n'hésitez pas à me remercier: https://ko-fi.com/A153227G

                    1 réponse Dernière réponse Répondre Citer 1
                    • C Hors-ligne
                      camille
                      dernière édition par

                      Merci Eolia, je vais de ce pas tester cela sur le dev.

                      Doekia, vous avez tout à fait raison concernant l'IA. Mais, d'une part, je voulais être honnête en disant que je m'étais fait aider par elle. Et d'autre part, ce problème d'images devenait vraiment très ch..ant à gérer. N'ayant plus eu de nouvelles depuis mon message du 21 juillet, je ne savais pas que vous travailliez dessus. Je pouvais être la seule à qui cela arrivait, vu que Herve_02 n'a plus rien dit. Donc ce we j'ai fouillé partout pour arriver à trouver la logique de cette perte d'images, la reproduire sur un site de test. J'ai cherché dans les class et controllers ce qui jouait sur la suppression et lui ai fourni les functions en lui expliquant ce qui se passait. Il m'a indiqué pourquoi la suppression d'une image supprimait également ses "soeurs". On était dimanche, PhenixSuite est un travail bénévole, je ne voulais pas enquiquiner les gens, mais il fallait que je trouve une solution rapidement. Et l'IA, on a moins mauvaise conscience de l'embêter le dimanche :-). J'ai testé plusieurs fois ses propositions jusqu'à ce que cela fasse exactement ce que je voulais. Et là encore, j'ai testé sur deux clones du site. Je ne suis pas dev PHP mais je crée des sites depuis plusieurs années, à force de réparer certains bugs grâce à l'aide des forums, j'arrive à comprendre le PHP dans la mesure du possible. Le code qu'il m'a fourni me semblait ok. Mais si vous voyez des erreurs, ce serait gentil de me les indiquer. A 64 ans, j'aime continuer à apprendre 🙂

                      1 réponse Dernière réponse Répondre Citer 0
                      • eoliaE Hors-ligne
                        eolia
                        dernière édition par

                        C'est ok avec la mise à jour de la fonction delete() ?

                        Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                        1 réponse Dernière réponse Répondre Citer 0
                        • Premier message
                          Dernier message
                        bug
                        26 sujets
                        1.6
                        24 sujets
                        front-office
                        11 sujets
                        1.5
                        8 sujets
                        1.7
                        5 sujets
                        système
                        4 sujets
                        administration
                        3 sujets
                        hack
                        3 sujets
                        module
                        3 sujets
                        performance
                        3 sujets
                        smtp
                        3 sujets
                        transporteurs
                        3 sujets
                        dashboard
                        2 sujets
                        https
                        2 sujets
                        paypal
                        2 sujets
                        promotions
                        2 sujets