Annonce

  •  » Utilisation
  •  » Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

#1 2006-05-18 12:47:54

caerdid
Membre
2006-05-12
27

Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Pour ceux que ca interesse, voici les modifications que j'ai apporté au fichier ..../admin/include/functions.php
pour contourner les erreurs is_dir et is_file lors d'une synchro.

Cette solution fonctionne chez moi en version 1.5.2 avec hebergement chez Free.

Toujours faire une simulation de synchro pour controler avant synchro réelle.


1) Dans le fichier functions.php en ligne 555 on trouve :

       if (is_dir($path.'/'.$node)
            and $node != '.'
            and $node != '..'
            and $node != 'thumbnail'
            and $node != 'pwg_high'
            and $node != 'pwg_representative')

Remplacer par :

if ($node != '.'
        and $node != '..'
        and $node != 'thumbnail'
        and $node != 'pwg_high'
        and $node != 'pwg_representative'
        and @is_dir($path.'/'.$node))

2) En ligne 1062 on trouve :

     while (($node = readdir($contents)) !== false)
      {
        if (is_file($path.'/'.$node))
        {
          $extension = get_extension($node);
         
//          if (in_array($extension, $conf['picture_ext']))
          if (isset($conf['flip_picture_ext'][$extension]))
          {
            if (basename($path) == 'thumbnail')
            {
              array_push($fs['thumbnails'], $path.'/'.$node);
            }
            else if (basename($path) == 'pwg_representative')
            {
              array_push($fs['representatives'], $path.'/'.$node);
            }
            else
            {
              array_push($fs['elements'], $path.'/'.$node);
            }
          }
//          else if (in_array($extension, $conf['file_ext']))
          else if (isset($conf['flip_file_ext'][$extension]))
          {
            array_push($fs['elements'], $path.'/'.$node);
          }
        }
        else if (is_dir($path.'/'.$node)
                 and $node != '.'
                 and $node != '..'
                 and $node != 'pwg_high'
                 and $recursive)
        {
          array_push($subdirs, $node);
        }
      }
    }
    closedir($contents);

Remplacer par :

    while (($node = readdir($contents)) !== false)
      {
        if ($node != '.'
                 and $node != '..'
                 and $node != 'pwg_high'
                 and $recursive
                 and @is_dir($path.'/'.$node))
        {
          array_push($subdirs, $node);
        }
        else if ($node != '.'
                 and $node != '..'
                 and $node != 'pwg_high')   //if (is_file($path.'/'.$node))
        {
          $extension = get_extension($node);
         
//          if (in_array($extension, $conf['picture_ext']))
          if (isset($conf['flip_picture_ext'][$extension]))
          {
            if (basename($path) == 'thumbnail')
            {
              array_push($fs['thumbnails'], $path.'/'.$node);
            }
            else if (basename($path) == 'pwg_representative')
            {
              array_push($fs['representatives'], $path.'/'.$node);
            }
            else
            {
              array_push($fs['elements'], $path.'/'.$node);
            }
          }
//          else if (in_array($extension, $conf['file_ext']))
          else if (isset($conf['flip_file_ext'][$extension]))
          {
            array_push($fs['elements'], $path.'/'.$node);
          }
        }
      }
    }
    closedir($contents);


//--------------FIN DES MODIFS





Voila, ca marche chez moi. Ces modifications ne sont que provisoires le temps que la situation se stabilise chez Free.


Caerdid.

Hors ligne

#2 2006-05-18 13:18:08

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

autant supprimer le test si tu ne remontes pas l'erreur du is_dir ou is_file.
ça me parait quand même super dangereux...

Hors ligne

#3 2006-05-18 13:42:56

caerdid
Membre
2006-05-12
27

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

C'est sur mais les erreurs is_dir sont a priori vraiment ciblées sur qq fichiers (qui ne sont pas des repertoires de toute façon), le is_dir sur les répertoires fonctionne.

Quand au is_file supprimé, je suis d'accord avec toi c'est crade on part du principe que si ce n'est pas un repertoire
ou si is_dir échoue alors c'est un fichier.

Ce n'est que provisoire, ca a le mérite de permettre une synchro qui fonctionne.

Je ne suis pas pro du php et je ne sais pas pourquoi is_dir et is_file ne réagissent plus comme avant chez Free.

En attendant ca décoince.

Hors ligne

#4 2006-05-19 12:27:56

caerdid
Membre
2006-05-12
27

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

La nouvelle architecture en cours de déploiement chez Free s'accompagne d'une restriction sur la gestion des fichiers en PHP.

Il est dorénavant interdit de lire (avec les fonctions php) des fichiers de plus de 5Mo. (source ADUF)

Conséquences les fonctions is_dir, is_file, ne fonctionnent plus sur des fichiers de plus de 5Mo.


En clair si vous avez des fichiers de plus de 5Mo, ils ne seront plus "trouvés" lors de la synchro et considérés comme supprimés des galeries.

Caerdid.

Dernière modification par caerdid (2006-05-19 12:28:33)

Hors ligne

#5 2006-05-19 12:46:15

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Merci de l'info... Cela change la donne.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#6 2006-05-19 12:53:58

Elcap
Membre
Lyon, France
2003-05-03
145

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

franchement, quand je vois le petit prix de certains hébergements payants, y'a plus de quoi se poser de questions : adandonnez free :-)

Hors ligne

#7 2006-05-20 09:57:56

lapinot84
Invité

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

bonjour, j'ai appliqué cette solution ! ça fonctionne ! je n'ai pas de fichiers supérieur à 5 méga ! Qu'en pense l'équipe PWG ? Quelles sont les conséquences de cette modif ? Merci

#8 2006-05-20 10:11:20

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

J'ai regardé un peu plus mais je suis assez perplexe quant aux résultats éventuels (lire aussi la remarque de mathiasm).

Cela peut occasionner des incohérences dans la base, mais pas de trou de sécurité.
Conséquences à terme: une réinstallation complète à partir de 0, avec perte des descriptions et des commentaires, entre autre.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#9 2006-05-20 10:37:47

lapinot84
Invité

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

bon, j'ai remis le fichier original ! par contre, le problème existe t il toujours avec la 1.6 ? Comment faire concrètement ? Quelle solution préconisez vous ?

dans l'attente, je crois que je ferai plus de synchro ! J'avais pas forcement envie de partir de Free ! Mais je vais commencer à y reflechir !

#10 2006-05-22 18:26:44

caerdid
Membre
2006-05-12
27

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Je me répète mais ce n'est qu'un contournement et si un pro du php a une solution plus élégante, je suis preneur.

La vraie solution est de réduire la taille des fichiers pour ne pas dépasser la taille fatidique des 5Mo par fichier.

Caerdid.

Hors ligne

#11 2006-05-27 19:46:17

TrinoM
Invité

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Merci pour le contournement du problème, j'ai essayé de remplacer par ton code et ça marche niquel, même pour les fichier de plus de 5Mo (qui ont enfin été reconnus lors de la synchro ^^).

Bref, merci! ;-)

#12 2006-05-28 15:35:51

lapinot84
Invité

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

bonjour,
toujours pas de solution "officielle" ?
Cette anomalie sera t elle résolue dans la 1.6 ?
je stresse un peu. j'ai à nouveau fait les modifications décrites précedemment (ça marche toujours nickel) mais comme l'a indiqué Vdigital, il y a un risque de perdre pas mal de données (descriptions et commentaires).

#13 2006-06-30 14:22:41

oliv316
Membre
2005-04-11
19

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

bonjour
pour mois apparement plus de problème je suis avec la 1.5 mod download + comentaire + jillli + et les miniature et la synchro se fait à nouveau normalement
quelque soit la taille du document
pourvu que ca dure

Hors ligne

#14 2006-07-05 11:39:55

caerdid
Membre
2006-05-12
27

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Bonjour,

Effectivement le problème semble être réglé.

Les fonctions is_dir et is_file sont de nouveau utilisables  sur les fichiers > 5Mo chez Free.

J'ai fait un test rapide en supprimant mes modifs, la synchronisation (simulée) passe sans warning.

Caerdid

Hors ligne

#15 2006-09-03 22:37:27

vincentm
Invité

Re: Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Aucun fichier de + de 5 mo mais des milliers de fichiers de quelques ko...

Chez online (le service payant de chez free) j'ai ce message la depuis la semaine dernière...

SELECT path, tn_ext
  FROM phpwebgallery_categories AS c INNER JOIN phpwebgallery_images AS i
    ON i.id = c.representative_picture_id
  WHERE uppercats REGEXP '(^|,)40(,|$)'
  ORDER BY RAND()
  LIMIT 0,1
;
[mysql error 1016] Can't open file: 'phpwebgallery_images.MYI' (errno: 145)



Le bonheur car je viens de perdre mon site pro.. des centaines d'heures de boulot pour des prunes..

  •  » Utilisation
  •  » Contournement des erreurs is_dir / is_file pour la synchro (pb Free)

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact