Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2006, 19h11   #1
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
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 :
Citation:
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 :
Citation:
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
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 19h19   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
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 ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 19h31   #3
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
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 ....
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 19h33   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Tu (i.e. le processus apache) as les droits sur le fichier ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 19h34   #5
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
j'ai un chmod 777 sur le dossier et 777 sur les fichiers uploadés
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 19h56   #6
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
c'est laquelle la ligne 30?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h05   #7
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
$supp = unlink("$dir$photo1");
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h08   #8
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
T'as pas fait une erreur de minuscule/majuscule ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h15   #9
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
non
Citation:
$photo1 = isset($_POST['photo1'])?$_POST['photo1']:"";
qui est recuperé là
Citation:
<input type="hidden" value="<? echo $photo1Heberg; ?> " name="photo1" />
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h39   #10
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par daemon2a
non

qui est recuperé là
Heu... J'ai pas bien compris le rapport
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h44   #11
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
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?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h46   #12
Membre du Club
 
Inscription : septembre 2006
Messages : 69
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 69
Points : 58
Points : 58
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 :
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.
PseudoCoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h50   #13
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
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.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h52   #14
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
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 :
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 :
Citation:
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 ......
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h53   #15
Membre du Club
 
Inscription : septembre 2006
Messages : 69
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 69
Points : 58
Points : 58
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... ?
PseudoCoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h57   #16
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
le répertoire ne dois pas etre bon dans ce cas
pk ne pas le tester?

Code :
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";
}
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 21h59   #17
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
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
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 22h02   #18
Membre du Club
 
Inscription : septembre 2006
Messages : 69
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 69
Points : 58
Points : 58
Vérifier le répertoire et vérifier le fichier...
Code :
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
PseudoCoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 22h03   #19
Invité de passage
 
Inscription : février 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 13
Points : 2
Points : 2
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 :
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
daemon2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 22h05   #20
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
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 )
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web