Navigation

    aide prestashop

    PrestaHelp

    • S'inscrire
    • Se connecter
    • Recherche
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    1. Accueil
    2. camille
    C
    • Profil
    • Abonnements
    • Abonnés
    • Sujets
    • Messages
    • Meilleur sujets
    • Groupes

    camille

    @camille

    0
    Réputation
    97
    Messages
    449
    Vues
    0
    Abonnés
    0
    Abonnements
    Inscrit Dernière connexion

    camille S'abonner

    Messages postés par camille

    • Mode profiling

      Hello, ce matin, visite de vérif sur le site. Curieusement, les requêtes sql sont affichées en FO et en BO. Pourtant, le profiling n'était pas activé. Je l'ai activé puis désactivé, cela a disparu. Personne n'y a touché. Et ce n'est pas la première fois que cela arrive. Curieux non ?

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      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 :-)

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      @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...

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

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

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      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 ...

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      Par contre, est-ce normal que, d'office, le bouton "Effacer les anciennes images" reste actif ? J'ai beau le mettre sur non, quand je reviens sur la page il est de nouveau actif.

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      Merci Eolia. A première vue, avec ChatGpt, nous avons réussi à faire un override de la class Image.php et du controller admin AdminImagesController.php. Testé sur 2 copies du prod, la dernière version semble être ok.
      Voici le code de AdminImagesController.php

      <?php
      /**
       * Override anti-cascade pour la suppression/régénération des vignettes
       * Phenix/PS 1.6.x – DEV
       */
      class AdminImagesController extends AdminImagesControllerCore
      {
          /**
           * SAFE: supprime uniquement les tailles explicites, jamais l’original id.jpg,
           * et n'exécute pas de nettoyage récursif global (pas de "cascade" sur les soeurs).
           */
          protected function _deleteOldImages($dir, $type, $product = false)
          {
              // TRACE facultative (décommente pour vérifier l’override)
              // @error_log("[IMG] override _deleteOldImages CALLED in ".__FILE__."\n", 3, _PS_ROOT_DIR_."/var/log/img_trace.log");
      
              if (!is_dir($dir)) {
                  return true;
              }
      
              // OK : purge du /img/tmp uniquement
              Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false);
      
              // Liste blanche stricte des tailles
              if (!is_array($type) || empty($type)) {
                  return true;
              }
              $allowed = array();
              foreach ($type as $t) {
                  if (!empty($t['name'])) {
                      $allowed[] = $t['name'];
                  }
              }
              if (empty($allowed)) {
                  return true;
              }
      
              $entries = scandir($dir);
              if (!is_array($entries)) {
                  return true;
              }
      
              foreach ($entries as $d) {
                  // Ne JAMAIS toucher à l'original (ex: 130.jpg)
                  if (preg_match('/^[0-9]+\.jpe?g$/i', $d)) {
                      continue;
                  }
      
                  // Supprimer uniquement :
                  //  - id[-id_product]-<type>.jpg|webp
                  //  - <lang>-default-<type>.jpg|webp
                  foreach ($allowed as $name) {
                      $reBase = '/^[0-9]+-'.($product ? '[0-9]+-' : '').preg_quote($name,'/').'\.(?:jpe?g|webp)$/i';
                      $reLang = '/^[a-z]{2}-default-'.preg_quote($name,'/').'\.(?:jpe?g|webp)$/i';
      
                      if (preg_match($reBase, $d) || preg_match($reLang, $d)) {
                          $full = $dir.$d;
                          if (file_exists($full)) {
                              @unlink($full);
                          }
                          break;
                      }
                  }
              }
      
              // pas de nettoyage récursif global (source de suppression en cascade)
              // if ($product) { $this->cleanAllImages(_PS_PROD_IMG_DIR_); }
      
              return true;
          }
      
          /**
           * Par sécurité, si du code legacy appelle encore cleanAllImages(),
           * on le rend inoffensif (pas de suppression récursive).
           */
          public function cleanAllImages($path)
          {
              // TRACE facultative
              // @error_log("[IMG] cleanAllImages bypassed in ".__FILE__."\n", 3, _PS_ROOT_DIR_."/var/log/img_trace.log");
              return true;
          }
      }
      

      et de Image.php

      <?php
      /**
       * Override SAFE de la classe Image (suppression non-destructive)
       * - Ne touche jamais à l’original id.jpg
       * - Ne supprime que les tailles de l’image courante
       * - Pas de nettoyage récursif / pas de prune des dossiers parents
       */
      class Image extends ImageCore
      {
          /**
           * Journalise l’appel puis délègue au parent.
           * Le parent appellera $this->deleteImage(), qui est overridée ci-dessous.
           */
          public function delete()
          {
              @file_put_contents(
                  _PS_ROOT_DIR_.'/var/log/img_trace.log',
                  date('c')." Image::delete id_image={$this->id} id_product={$this->id_product}\n",
                  FILE_APPEND
              );
              // On laisse le parent gérer la partie BDD (ps_image*, position, cover…)
              return parent::delete();
          }
      
          /**
           * Suppression des fichiers sur disque (override SAFE)
           * $force_delete est ignoré volontairement pour NE PAS supprimer l’original.
           */
          public function deleteImage($force_delete = false)
          {
              // Chemin de base sans extension, ex: /img/p/1/3/0/0/1300
              $basePath = $this->getPathForCreation();
              $dir      = dirname($basePath).'/';
      
             
      // 1) SUPPRIMER l’original et ses variantes (jpg, png, webp)
      $exts = array('jpg','png','webp');
      foreach ($exts as $ext) {
          $orig = $basePath.'.'.$ext;
          if (file_exists($orig)) {
              @unlink($orig);
              @file_put_contents(
                  _PS_ROOT_DIR_.'/var/log/img_trace.log',
                  date('c')." unlink original: ".$orig."\n",
                  FILE_APPEND
              );
          }
      }
              // 2) Supprimer UNIQUEMENT les déclinaisons de CETTE image
              $types = ImageType::getImagesTypes('products', false);
              $exts  = array('jpg','webp'); // on couvre les 2 familles
              foreach ($types as $t) {
                  $name = stripslashes($t['name']);
                  foreach ($exts as $ext) {
                      $file = $basePath.'-'.$name.'.'.$ext;
                      if (file_exists($file)) {
                          @unlink($file);
                          @file_put_contents(
                              _PS_ROOT_DIR_.'/var/log/img_trace.log',
                              date('c')." unlink variant: ".$file."\n",
                              FILE_APPEND
                          );
                      }
                      // variante 2x si jamais utilisée
                      $file2x = $basePath.'-'.$name.'2x'.'.'.$ext;
                      if (file_exists($file2x)) {
                          @unlink($file2x);
                          @file_put_contents(
                              _PS_ROOT_DIR_.'/var/log/img_trace.log',
                              date('c')." unlink variant2x: ".$file2x."\n",
                              FILE_APPEND
                          );
                      }
                  }
              }
      
              // 3) NE PAS remonter dans l’arbo, NE PAS pruner les dossiers parents
              //    (donc pas de rmdir(), pas de cleanAllImages())
      
              // On considère l’opération disque OK même si certaines variantes n’existaient pas.
              return true;
          }
      }
      
      

      Je ne suis hélas pas dév PHP, je peux y apporter des changements, mais pour créer des overrides, j'ai préféré me faire aider. Car pour la gestion du site, cela commençait à devenir vraiment compliqué, ces disparitions d'images. Pour les anciennes, je pouvais les récupérer du clone d'origine. Mais pour les nouvelles, on est obligé de les renvoyer. Avec, en plus, un souci au niveau de la bdd vu que les anciennes assos img/prod n'étaient pas supprimées.

      Pour les erreurs 500, si elles ne peuvent être liées à un script auto de régénération, alors d'où peuvent-elles venir ? J'attends un avis de spécialiste demain chez O2Switch car ni eux, ni moi, n'arrivons à trouver une piste :-(

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      Je confirme mon doute. J'ai testé sur le dev, à 2 reprises.
      Dans la bdd j'ai vu des images "soeurs"
      img id = 130 -> prod id = 166
      img id = 1301 - prod id = 840
      img id = 1302 - prod id = 841
      Donc j'ai ajouté une image au prod id 166.
      -> tout est ok
      J'ai alors supprimé l'ancienne image du prod 166 (img id 130)
      -> les produits 840 et 841 ont perdu leurs images, les dossiers 1>3>0>1 et 1>3>0>2 ont été effacés immédiatement.

      Je ne sais pas si il y a un lien mais j'ai testé ceci aussi sur le site de dev :
      img id 120 prod id 100.
      Ajout d'une image que je mets en couv
      -> dans le ftp la 120.jpg a perdu ses vignettes (home, cart, etc).
      Mais les dossiers 120x sont (encore) là.

      Sur le site de prod, hier, il y avait aussi des images "seules", elles semblent avoir toutes disparu aujourd'hui. Et, à priori, personne ne les a supprimées dans les fiches produit. Peut-être un script qui les considérait comme "orphelines" parce que sans vignettes ?

      voilà ...
      peut-être cela peut-il donner une piste ? un script trop gourmand ?
      Et comment savoir à quel moment la régénération automatique se fait ? Pour savoir si cela concorde avec les nombreuses erreurs 500 ?

      Merci d'avance !

      posté dans Bugs & Améliorations
      C
      camille
    • RE: Images produit qui disparaissent

      Bonjour, aujourd'hui 30 images ont "disparu".
      Alors je cherche.

      1. J'ai vu que la régénération des images était automatique. Utilise-t-elle la même procédure que celle de Prestashop ? (qui génère des erreurs 500 quand il y a beaucoup d'images).
        Si oui, j'ai peut-être alors une explication sur le nombre de pannes avec erreur 500
      2. Si elle est automatique et que le bouton "Supprimer les anciennes images" est activé, alors à chaque fois ces images sont supprimées pour être régénérées.
        Sauf que, à première vue, si des produits sont désactivés, les déclinaisons d'images sont supprimées et pas régénérées (home, cart, etc). Mais l'image de base est gardée. Ex 160.jpg
        => je n'ai pas encore tout vérifié, mais les images qui disparaissent sont, à priori, toutes dans des sous-dossiers d'images de produits désactivés.
        Ex : le produit 946 a une image id 1608, le 947 image id 1609, etc
        Dans le dossier 1>0>6 j'ai l'image 160.jpg (produit désactivé) mais je n'ai plus aucun sous-dossier

      J'ai désactivé la suppression des images dans la régénération. Il ne m'avait jamais semblé que l'état de ce bouton était pris en compte dans Prestashop.
      Donc, est-il possible que le processus de Phenix fasse comme la régénération manuelle de PS, avec prise en compte de l'état du bouton ? Et en provoquant autant d'erreurs 500 ? (au point qu'en général, sur PS, j'installe un module pour le faire, sans surcharge serveur)

      Merci d'avance

      posté dans Bugs & Améliorations
      C
      camille
    • RE: devcustom ?

      Voici le contenu du .m4

      #***************************************************************************
      #                                  _   _ ____  _
      #  Project                     ___| | | |  _ \| |
      #                             / __| | | | |_) | |
      #                            | (__| |_| |  _ <| |___
      #                             \___|\___/|_| \_\_____|
      #
      # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
      #
      # This software is licensed as described in the file COPYING, which
      # you should have received as part of this distribution. The terms
      # are also available at https://curl.se/docs/copyright.html.
      #
      # You may opt to use, copy, modify, merge, publish, distribute and/or sell
      # copies of the Software, and permit persons to whom the Software is
      # furnished to do so, under the terms of the COPYING file.
      #
      # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
      # KIND, either express or implied.
      #
      # SPDX-License-Identifier: curl
      #
      #***************************************************************************
      
      dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
      dnl -------------------------------------------------
      dnl Use the C preprocessor to find out if the given object-style symbol
      dnl is defined and get its expansion. This macro will not use default
      dnl includes even if no INCLUDES argument is given. This macro will run
      dnl silently when invoked with three arguments. If the expansion would
      dnl result in a set of double-quoted strings the returned expansion will
      dnl actually be a single double-quoted string concatenating all them.
      
      AC_DEFUN([CURL_CHECK_DEF], [
        AC_REQUIRE([CURL_CPP_P])dnl
        OLDCPPFLAGS=$CPPFLAGS
        # CPPPFLAG comes from CURL_CPP_P
        CPPFLAGS="$CPPFLAGS $CPPPFLAG"
        AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
        AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
        if test -z "$SED"; then
          AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
        fi
        if test -z "$GREP"; then
          AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
        fi
        ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
        tmp_exp=""
        AC_PREPROC_IFELSE([
          AC_LANG_SOURCE(
      ifelse($2,,,[$2])[[
            #ifdef $1
            CURL_DEF_TOKEN $1
            #endif
          ]])
        ],[
          tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
            "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
            "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
            "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
          if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
            tmp_exp=""
          fi
        ])
        if test -z "$tmp_exp"; then
          AS_VAR_SET(ac_HaveDef, no)
          ifelse($3,,[AC_MSG_RESULT([no])])
        else
          AS_VAR_SET(ac_HaveDef, yes)
          AS_VAR_SET(ac_Def, $tmp_exp)
          ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
        fi
        AS_VAR_POPDEF([ac_Def])dnl
        AS_VAR_POPDEF([ac_HaveDef])dnl
        CPPFLAGS=$OLDCPPFLAGS
      ])
      
      
      dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
      dnl -------------------------------------------------
      dnl Use the C compiler to find out only if the given symbol is defined
      dnl or not, this can not find out its expansion. This macro will not use
      dnl default includes even if no INCLUDES argument is given. This macro
      dnl will run silently when invoked with three arguments.
      
      AC_DEFUN([CURL_CHECK_DEF_CC], [
        AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
        ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
        AC_COMPILE_IFELSE([
          AC_LANG_SOURCE(
      ifelse($2,,,[$2])[[
            int main(void)
            {
            #ifdef $1
              return 0;
            #else
              #error force compilation error
            #endif
            }
          ]])
        ],[
          tst_symbol_defined="yes"
        ],[
          tst_symbol_defined="no"
        ])
        if test "$tst_symbol_defined" = "yes"; then
          AS_VAR_SET(ac_HaveDef, yes)
          ifelse($3,,[AC_MSG_RESULT([yes])])
        else
          AS_VAR_SET(ac_HaveDef, no)
          ifelse($3,,[AC_MSG_RESULT([no])])
        fi
        AS_VAR_POPDEF([ac_HaveDef])dnl
      ])
      
      
      dnl CURL_CHECK_LIB_XNET
      dnl -------------------------------------------------
      dnl Verify if X/Open network library is required.
      
      AC_DEFUN([CURL_CHECK_LIB_XNET], [
        AC_MSG_CHECKING([if X/Open network library is required])
        tst_lib_xnet_required="no"
        AC_COMPILE_IFELSE([
          AC_LANG_SOURCE([[
            int main(void)
            {
            #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
              return 0;
            #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
              return 0;
            #else
              #error force compilation error
            #endif
            }
          ]])
        ],[
          tst_lib_xnet_required="yes"
          LIBS="-lxnet $LIBS"
        ])
        AC_MSG_RESULT([$tst_lib_xnet_required])
      ])
      
      
      dnl CURL_CHECK_AIX_ALL_SOURCE
      dnl -------------------------------------------------
      dnl Provides a replacement of traditional AC_AIX with
      dnl an uniform behavior across all autoconf versions,
      dnl and with our own placement rules.
      
      AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
        AH_VERBATIM([_ALL_SOURCE],
          [/* Define to 1 if OS is AIX. */
      #ifndef _ALL_SOURCE
      #  undef _ALL_SOURCE
      #endif])
        AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
        AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl
        AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
        AC_EGREP_CPP([yes_this_is_aix],[
      #ifdef _AIX
         yes_this_is_aix
      #endif
        ],[
          AC_MSG_RESULT([yes])
          AC_DEFINE(_ALL_SOURCE)
        ],[
          AC_MSG_RESULT([no])
        ])
      ])
      
      
      dnl CURL_CHECK_NATIVE_WINDOWS
      dnl -------------------------------------------------
      dnl Check if building a native Windows target
      
      AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
        AC_CACHE_CHECK([whether build target is a native Windows one], [curl_cv_native_windows], [
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
            ]],[[
              #ifdef _WIN32
                int dummy=1;
              #else
                #error Not a native Windows build target.
              #endif
            ]])
          ],[
            curl_cv_native_windows="yes"
          ],[
            curl_cv_native_windows="no"
          ])
        ])
        AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$curl_cv_native_windows" = xyes)
      ])
      
      
      dnl CURL_CHECK_HEADER_LBER
      dnl -------------------------------------------------
      dnl Check for compilable and valid lber.h header,
      dnl and check if it is needed even with ldap.h
      
      AC_DEFUN([CURL_CHECK_HEADER_LBER], [
        AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
        AC_CACHE_CHECK([for lber.h], [curl_cv_header_lber_h], [
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              #undef inline
              #ifdef _WIN32
              #ifndef WIN32_LEAN_AND_MEAN
              #define WIN32_LEAN_AND_MEAN
              #endif
              #include <windows.h>
              #else
              #ifdef HAVE_SYS_TYPES_H
              #include <sys/types.h>
              #endif
              #endif
              #ifndef NULL
              #define NULL (void *)0
              #endif
              #include <lber.h>
            ]],[[
              BerValue *bvp = NULL;
              BerElement *bep = ber_init(bvp);
              ber_free(bep, 1);
            ]])
          ],[
            curl_cv_header_lber_h="yes"
          ],[
            curl_cv_header_lber_h="no"
          ])
        ])
        if test "$curl_cv_header_lber_h" = "yes"; then
          AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1,
            [Define to 1 if you have the lber.h header file.])
          #
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              #undef inline
              #ifdef _WIN32
              #ifndef WIN32_LEAN_AND_MEAN
              #define WIN32_LEAN_AND_MEAN
              #endif
              #include <windows.h>
              #else
              #ifdef HAVE_SYS_TYPES_H
              #include <sys/types.h>
              #endif
              #endif
              #ifndef NULL
              #define NULL (void *)0
              #endif
              #ifndef LDAP_DEPRECATED
              #define LDAP_DEPRECATED 1
              #endif
              #include <ldap.h>
            ]],[[
              BerValue *bvp = NULL;
              BerElement *bep = ber_init(bvp);
              ber_free(bep, 1);
            ]])
          ],[
            curl_cv_need_header_lber_h="no"
          ],[
            curl_cv_need_header_lber_h="yes"
          ])
          #
          case "$curl_cv_need_header_lber_h" in
            yes)
              AC_DEFINE_UNQUOTED(NEED_LBER_H, 1,
                [Define to 1 if you need the lber.h header file even with ldap.h])
              ;;
          esac
        fi
      ])
      
      
      dnl CURL_CHECK_HEADER_LDAP
      dnl -------------------------------------------------
      dnl Check for compilable and valid ldap.h header
      
      AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
        AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl
        AC_CACHE_CHECK([for ldap.h], [curl_cv_header_ldap_h], [
          AC_COMPILE_IFELSE([
            AC_LANG_PROGRAM([[
              #undef inline
              #ifdef _WIN32
              #ifndef WIN32_LEAN_AND_MEAN
              #define WIN32_LEAN_AND_MEAN
              #endif
              #include <windows.h>
              #else
              #ifdef HAVE_SYS_TYPES_H
              #include <sys/types.h>
              #endif
              #endif
              #ifndef LDAP_DEPRECATED
              #define LDAP_DEPRECATED 1
              #endif
              #ifdef NEED_LBER_H
              #include <lber.h>
              #endif
              #include <ldap.h>
            ]],[[
              LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
              int res = ldap_unbind(ldp);
            ]])
          ],[
            curl_cv_header_ldap_h="yes"
          ],[
            curl_cv_header_ldap_h="no"
          ])
        ])
        case "$curl_cv_header_ldap_h" in
          yes)
            AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1,
              [Define to 1 if you have the ldap.h header file.])
            ;;
        esac
      ])
      
      
      
      
      

      Dans le dossier log, il y a un fichier curl_last.log, à première vue lié à l'API Prestashop, et mis à jour aujourd'hui. Et un fichier curllog.log, lié à devcustom, mais avec comme referent l'url du site de dev, et date de dernière modification qui doit être celle du jour où j'ai envoyé un clone du dev sur le serveur où il devait remplacer l'ancien site.

      J'ai dû tronquer le contenu du fichier .m4, sinon impossible d'envoyer ce message car trop long

      posté dans PhenixSuite
      C
      camille