Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

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

#1 01/07/2020 10:15:26

pydou
Membre
Inscription : 01/04/2010
Messages : 107
Site Web

bug dans la librairie PCLZIP

Il arrive que la librairie PCLZIP affiche un warning du côté de la ligne 1845. C'est du au fait qu'on multiplie une chaîne par un nombre !!!
Memory_limit donne la quantité de mémoire en K, M ou G ... et il faut supprimer le dernier caractère et transformer en nombre avant de multiplier.
C'est invisible en mode production mais cela peut générer des erreurs plus importantes si la limite mémoire est mal calculée !

Pour corriger çà, ajouter 2 lignes de code dans la routine :

  function privOptionDefaultThreshold(&$p_options)
  {
    $v_result=1;
   
    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
      return $v_result;
    }
   
    // ----- Get 'memory_limit' configuration value
    $v_memory_limit = ini_get('memory_limit');
    $v_memory_limit = trim($v_memory_limit);
    $last = strtolower(substr($v_memory_limit, -1));
///////////////////// 2 lignes ajoutées /////////////////////////////////////////
    if (in_array($last,array('g','m','k')))
        $v_memory_limit=intval(substr($v_memory_limit,0,strlen($v_memory_limit)-1));
/////////////////////////////////////////////////////////////////////////////////
    if($last == 'g')
        //$v_memory_limit = $v_memory_limit*1024*1024*1024;
        $v_memory_limit = $v_memory_limit*1073741824;
    if($last == 'm')
        //$v_memory_limit = $v_memory_limit*1024*1024;
        $v_memory_limit = $v_memory_limit*1048576;
    if($last == 'k')
        $v_memory_limit = $v_memory_limit*1024;
           
    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
   

    // ----- Sanity check : No threshold if value lower than 1M
    if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {
      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
    }
         
    // ----- Return
    return $v_result;
  }

Hors ligne

#2 02/07/2020 12:21:47

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 078
Site Web

Re : bug dans la librairie PCLZIP

Bonjour à tous.

Merci à toi d'avoir signaler ce warning smile

Pour corriger ce warning sous les versions récentes de PHP, le mieux est d'utiliser la dernière version de PCLZIP: https://github.com/chamilo/pclzip/archive/master.zip

a+
Jean-Paul

Hors ligne

Pied de page des forums