IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] suppresion de fichiers


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut [SQL] suppresion de fichiers
    bonjour,
    Apres une recherche sur le forum, je n'ai pas trouvé de reponses satisfaisnate pour mon probleme.
    Je suis en train d'ecrire un script de modification d'une fiche de description d'un gîte, celle ci comporte 3 images. En cas de modification d'une image je voudrais effacer l'image precedement enregistrée afin d'economiser de l'espace sur le serveur.Donc dans le formulaire de modif j'affiche l'image , un champ caché comportant le nom de l'image provenant de la base de données et un champ de tranfert de fichier. Le tout est recuperé et traité par le script suivant :
    if($_FILES['photo1Heberg']['error'] >= 0)
    {
    if($_FILES['photo1Heberg']['size'] <= $maxsize)
    {
    $extension_upload = substr(strstr($_FILES['photo1Heberg']['name'], '.') ,1);

    if ( in_array($extension_upload,$extensions_valides) )
    {

    $nom = "../photos/".$_FILES['photo1Heberg']['name'];
    $upload1 = move_uploaded_file($_FILES['photo1Heberg']['tmp_name'],$nom);
    chmod($nom,0777);
    if(($photo1 != "") && ($upload1))
    {
    $dir = $_SERVER['DOCUMENT_ROOT']."/resahotel/photos/";
    $supp = unlink("$dir.$photo1");
    echo $supp;

    }
    }else{$erreur = "extension erronée";}
    } else { $erreur = "fichier trop gros";}
    }else{$erreur = "Erreur lors du tranfsert";}
    Lors du traitement le fichier est bien uploader mais la suppression du fichier ne se fait pas et j'obtiens le message suivant :
    Warning: unlink(/home/corseweb/www/resahotel/photos/.Firewall.png ) [function.unlink]: No such file or directory in /home/corseweb/www/resahotel/admin/UpdateHeberg.php on line 30
    Je ne comprend pas j'ai essayé avec le chemin absolu et relatif dans les 2 cas j'obtiens le même message.
    Est ce parce que le fichier n'est pas dans le même dossier que les images ?
    Merci de vos reponses
    daemon2a

  2. #2
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Tu as vérifié que le fichier était bien dans le répertoire donné par le message d'erreur (a priori non) ? Le point au début du nom de fichier, c'est pas une erreur ?

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    effectivement le point est bien une erreur mais le probleme reste entier.
    j'ai toujours le même message sans le point
    Le fichier est bien present dans le dossier j'ai verifié plutot 2 fois qu'une ....

  4. #4
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Tu (i.e. le processus apache) as les droits sur le fichier ?

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    j'ai un chmod 777 sur le dossier et 777 sur les fichiers uploadés

  6. #6
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    c'est laquelle la ligne 30?

  7. #7
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    $supp = unlink("$dir$photo1");

  8. #8
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    T'as pas fait une erreur de minuscule/majuscule ?

  9. #9
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    non
    $photo1 = isset($_POST['photo1'])?$_POST['photo1']:"";
    qui est recuperé là
    <input type="hidden" value="<? echo $photo1Heberg; ?> " name="photo1" />

  10. #10
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par daemon2a
    non

    qui est recuperé là
    Heu... J'ai pas bien compris le rapport

  11. #11
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    Citation Envoyé par daemon2a
    $supp = unlink("$dir$photo1");
    tu veux concatener tes 2 variable pour faire un chemin d'accès?

    t'as essayé de faire un echo avant? de $dir.$photo1?

  12. #12
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Par défaut
    Salut,

    1. Il ne peut pas avoir fait d'erreur majuscule/minuscule, du fait qu'il utilise une variable unique.

    2. Le résultat de la concaténation, on le trouve dans le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: unlink(/home/corseweb/www/resahotel/photos/.Firewall.png )
    Bon, faut juste enlever le . devant le nom du fichier, il a dit que c'était une erreur.

  13. #13
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par PseudoCoder
    Salut,

    1. Il ne peut pas avoir fait d'erreur majuscule/minuscule, du fait qu'il utilise une variable unique.
    Je dois passer à côté de quelque chose, je ne vois toujours pas de rapport avec les maj/min dans le nom de fichier.

  14. #14
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    Citation Envoyé par PseudoCoder
    Salut,

    1. Il ne peut pas avoir fait d'erreur majuscule/minuscule, du fait qu'il utilise une variable unique.

    2. Le résultat de la concaténation, on le trouve dans le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: unlink(/home/corseweb/www/resahotel/photos/.Firewall.png )
    Bon, faut juste enlever le . devant le nom du fichier, il a dit que c'était une erreur.
    j'ai enlevé le point mais l'erreur est toujours la même :
    Warning: unlink(/home/corseweb/www/resahotel/photos/PdT.png ) [function.unlink]: No such file or directory in /home/corseweb/www/resahotel/admin/UpdateHeberg.php on line 30
    je pensais qu'il etait plus simple d'éffacer un fichier sur le serveur ......

  15. #15
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Par défaut
    Ben... Je sais pas comment est fait son formulaire, mais s'il est généré d'après des données stockées dans une base SQL, il ne peut pas se tromper dans le nom du fichier.
    En toute logique, le nom du fichier stocké est celui donné par son script lors de l'upload de l'image.
    Quand il veut éditer une annonce, le formulaire propose tout seul, d'après les données de la base, le nom du fichier (qui est d'ailleurs dans un champ hidden). Le tout étant envoyé au script qui utilise une variable...
    A aucun moment me semble-t-il il n'y a intervention humaine sur le nom du fichier à supprimer... Donc pas d'erreur possible sur majuscules/minuscules.

    Maintenant, s'il saisit le nom du fichier à la main, c'est une autre histoire... Mais les bouts de code que je vois tendent à montrer que ce n'est pas le cas.

    EDIT > Quand tu vas sur http://www.tonsite.com/resahotel/photos/PdT.png il affiche bien l'image alors... ?

  16. #16
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    le répertoire ne dois pas etre bon dans ce cas
    pk ne pas le tester?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(is_dir($dir)){
      echo"Bon répertoire <br>";
      if(is_file($photo1)){
        echo"Bon fichier <br>";
      }
      else{
        echo"trouble de fichier";
      }
    }
    else{
     echo"trouble de répertoire";
    }

  17. #17
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par PseudoCoder
    Mais les bouts de code que je vois tendent à montrer que ce n'est pas le cas.
    Oui, je suis d'accord. Mais ça coûte rien de vérifier

  18. #18
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Par défaut
    Vérifier le répertoire et vérifier le fichier...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!file_exists($dir.$photo1))
    { die ('Fichier inexistant'); }
    Histoire de voir...

    Pis vérifier en http aussi : http://www.tonsite.com/resahotel/photos/PdT.png

  19. #19
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    Citation Envoyé par PseudoCoder

    EDIT > Quand tu vas sur http://www.tonsite.com/resahotel/photos/PdT.png il affiche bien l'image alors... ?

    RE-EDIT > Tu pourrais ajouter un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!file_exists($dir.$photo1))
    { die ('Fichier inexistant'); }
    c'est il me donne bien l'image comme tu peux voir : http://www.corse-web.net/resahotel/photos/PdT.png
    oui je pourrais effectivement faire un test mais ça ne solutionne pas vraiment mon probleme le fichier image ne sera pas effacé quand même.
    Le but est quand même de limiter l'occupation du serveur par des photos inutiles

  20. #20
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    Citation Envoyé par daemon2a
    oui je pourrais effectivement faire un test mais ça ne solutionne pas vraiment mon probleme le fichier image ne sera pas effacé quand même.
    Le but est quand même de limiter l'occupation du serveur par des photos inutiles
    Oui mais les teste sont pour voir si ya pas erreur dans tes variable justement
    pas pour mettre du code superflux que tu vas laisser dans tout ca!

    test si te variable sont bonne avant de faire ton unlink...si elle sont bonne comme dans le test que je t'ai mis plus haut....ben alors ca découle vraisemblablement de la fonction unlink...mais avant
    test tes variable encore une fois (et je me répete la )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [ORACLE 9i][SQL*PLUS] : Un fichier LanceDesSelect.bat
    Par Etienne maheu dans le forum Sql*Plus
    Réponses: 3
    Dernier message: 24/04/2006, 12h12
  2. [PL/SQL]Génération de fichier plat en PL SQL
    Par Fiora dans le forum Oracle
    Réponses: 2
    Dernier message: 31/03/2006, 14h23
  3. [VBA] Requête SQL sur un fichier excel ?
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2006, 23h06
  4. sql loader et fichier paramètre dynamique
    Par ade05fr dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 13/01/2006, 14h54
  5. Transposer des données sql dans un fichier texte
    Par Anakior dans le forum Outils
    Réponses: 3
    Dernier message: 11/12/2005, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo