Partage
  • Partager sur Facebook
  • Partager sur Twitter

création dossier

changement du chmod non désiré

    29 août 2006 à 13:45:08

    Bonjour, bonjour

    Toujours sur ma galerie photo, je cherches à résoudre les erreurs qui arrivent au fur et à mesure.
    J'ai toujours ce souci de chmod mais qui à évolué.

    La problématique



    Le script dont le code sera affiché plus bas est censé en fonction de certaines conditions créer un dossier "mini" si celui n'existe pas. La fonction mkdir est censé lui imposer un chmod par défaut à 777. Par la suite le script scan les images du dossier racine, créer les miniatures et les place dans le dossier "mini".

    Le souci est le suivant, si le dossier mini est créé en 755, les images miniature généré ont un chmod de 644 ce qui rend impossible l'effacement de ces dernières. Si le dossier mini est en 777, alors les miniature créés ont un chmod permettant l'effacement depuis un client ftp.

    Logiquement aucun souci me direz vous puisque lors de la création du dossier je spécifie le chmod à 777.
    Et bien non, lorsque le dossier "mini" est crée son chmod est à 755.

    Le script




    require ('../inc/config.php');
    $sql = "SELECT dossier FROM gal_nom WHERE id = '" . $_POST['chemin_dossier'] . "'";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $donnees = mysql_fetch_array ($req);
                           
    $id_gal_nom = $_POST['chemin_dossier'];
    echo $id_gal_nom . '<br/>';
                           
    // On selectionne le dossier à scanner
    $chemin_dossier = '../img/galerie/' . $donnees['dossier'];
                           
    // VERIFICATION EXISTENCE DOSSIER MINI
    $dir = $chemin_dossier . '/mini';
    echo 'dir = ' . $dir . '<br/>';
    $dossier_mini = opendir($dir);
                           
    if ($dossier_mini != false /* et si le nombre de miniatures correspponds au nombre d'image */)
            {
                    //On vérifie si le nombre d'image du dossier correspond bien au nombre de mini
                                   
                                   
                    //Alors on laisse tranquille et on affiche un message
                    echo '<p class="information">Le dossier mini existe  déjà ainsi que les miniatures de vos images</p>';
            }
                           
    else
            {
                    if (isset ($_POST['chemin_dossier']))
                            {
                                //On créer le dossier mini
                                    mkdir ($dir, 0777);
                                   echo 'dossier créé (chmod 0777)<br/>';
                            }
                    else
                            {
                                    echo '<p class="information">Veuillez sélectionner une galerie</p>';
                            }
                                           
                                           
                    if ($handle = opendir($chemin_dossier))
                            {
                                while (false !== ($file = readdir($handle)))
                                    {
                                    // On enlève les informations que l'on ne veut pas rentrer dans le tableau (le dossier mini, et les renvois aux                 
                                    // niveaux supérieurs . et ..)
                                    if ($file != "." && $file != ".." && $file != 'mini' && $file != '.DS_Store')
                                            {
                                                        
                                                    // CREATION DES IMAGES MINIATURES (en fonction de leur dimension, conservation des proportions)
                                                                           
                                                    // On établie une variable ayant le chemin relatif de l'image à miniaturiser
                                                    $chemin_image = $chemin_dossier . '/' . $file;
                                                                           
                                                    // On extrait les dimensions de l'image
                                                    list($largeur, $hauteur) = getimagesize($chemin_image);
                                                                           
                                                    // On compare hauteur et largeur pour connaitre la plus grande valeur (on soustrait largeur à hauteur, si $résultat positif alors largeur > hauteur, si $résultat négatif alors largeur < hauteur)
                                                    $resultat = $largeur - $hauteur;
                                                                           
                                                    // Si résultat positif
                                                    if ($résultat >= 0)
                                                    {
                                                    // On détermine le coéfficient de proportion de l'image
                                                    $coefficient_proportion = $largeur / $hauteur;
                                                                                           
                                                    // On prend l'image source
                                                    $image_source = imagecreatefromjpeg($chemin_image);
                                                                                           
                                                    // On créer une image vide à partir de l'image source (1ere valeur x = largeur, 2eme valeur y = hauteur)
                                                    $image_destination = imagecreatetruecolor(200, 200 / $coefficient_proportion);
                                                                                           
                                                    // On récupère les dimensions de l'image de destination
                                                    $largeur_source = imagesx($image_source);
                                                    $hauteur_source = imagesy($image_source);
                                                    $largeur_destination = imagesx($image_destination);
                                                    $hauteur_destination = imagesy($image_destination);
                                                                                           
                                                    // On créer la miniature
                                                    imagecopyresampled($image_destination, $image_source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
                                                                                           
                                                    // On enregistre la miniature dans le dossier mini
                                                    $chemin_mini = $dir . '/mini_' . $file;
                                                    imagejpeg($image_destination, $chemin_mini);
                                                                                           
                                                                           
                                                    echo '<a href="../img/galerie/' . $_POST['chemin_dossier'] . '/' . $file . '" title=""><img src="' . $chemin_mini . '" alt="" /></a><br/>';
                                                                                   
                                                    // Travail sur la bdd
                                                    $image_mini = 'mini_' . $file;
                                                    // On écrit la requete d'insertion des infos dans la bdd
                                                    $sql = "INSERT INTO gal_image VALUES('', '" . $id_gal_nom . "', '" . $image_mini . "', '" . $image_mini . "', '')";          
                                                     // On exécute la requête
                                                    $req = mysql_query ($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
           
                                           
                                                                           
                                                    }
                                            }
                                                   
                                    }
                            }



    Si j'enlève la partie qui génère les miniatures, le dossier "mini" à un chmod à 777, si je laisse tel quel, le chmod du dossier "mini" est à 755.

    Quelqu'un a t il déjà rencontré ce genre de problème ? Quelqu'un vois une erreur qui m'a échappée ?


    Merci d'avance.
    Matt
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2006 à 14:31:25

      un petit up car je n'ai toujours pas trouvé d'ou vient le souci.
      • Partager sur Facebook
      • Partager sur Twitter

      création dossier

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown