Problème d'effacage de dossier

Signaler
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007
-
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007
-
Bonjour, j'ai un probleme, en fait je ne suis pas capable d'effacer un dossier...

$Emp continet le chemin complet du dossier. Je n'ai aucun probleme pour créer le dossier, mais pour l'Effacer ca ne marche pas.

Voici le code que j'utilise pour crée le dossier : mkdir ( $Emp, "0777" );

Voici le code pour effacer mon dossier :
rmdir ( "$Emp" ) or die("Ne peut pas effacer le fichier");

Et quand je vais voir mon script php, ca me dit "Ne peut pas effacer le fichier" alors je ne sait pas pourquoi la fonction rmdir() de marche pas.

Pour les infos, je suis sur free.fr

12 réponses

Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

Vérifie que ton dossier est vide avant de l'effacer...

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
tu peux faire une fonction de ce style pour effacer un dossier non vide :

function deldir($dir){

1 tu liste les fichiers/dossiers de $dir tu places ce nom de fichier ou dossier dans $nouveaudir
2 si c'est un ficheir alors tu le suprimes, si c'ets un dossier alors tu apelles deldir($dir/$nouveaudir) puis tu suprimes $nouveaudir
3 si c'ets un fichier, tu suprime le fichier
4 tu suprimes ton dossier en question...
}

voila ça devrait marcher et en plus c'est récursif...
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007

Lol, je savait deja...

Mais le fichier est vide, et j'ai les droits, et le chemin est exact alors pourkoi ca ne marche pas??
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
dossier ou fichier ???
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007

C'Est un dossier,

j'utilise la commande rmdir("nom") et avec le chemin complet, le dossier est vide ,et j'ai les droits 777

il doit y avoir une probleme avec le hebergeur,

ya t-il une autre maniere d'effacer un dossier? (sans utiliser des commandes ftp)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
oui t'as aussi system("mkdir $fichier");
Messages postés
9
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
18 avril 2005

Le Problem qui ce pose c que Free a desactivé un certain nombre de fonction:
http://faq.free.fr/?q=1137



Quelles sont les fonctions PHP interdites sur Free ?,
----

Par soucis de performances et de sécurité, nous avons choisi de desactiver les fonctions suivantes de php:





chown,
chmod,
get_current_user,
----

php_uname,
putenv,
set_time_limit,
----

getmyuid,
getmypid,
dl,
----

ini_alter,
ini_restore,
ini_set,
----

exec,
passthru,
system,
----

popen,
pclose,
leak,
----

mysql_list_dbs,
listen,
chgrp,
----

disk_total_space,
disk_free_space,
rmdir,
----

realpath,
tmpfile,
link,
----

shell_exec,
proc_open,
chroot,
----

openlog,
closelog,
syslog,
----

flock,
socket_create_listen,
socket_accept,
----

socket_listen,
sleep,
usleep,
----

umask,
set_include_path,
restore_include_path,
----

symlink


(La fonction mail() fonctionne avec des quotas d'envoi (2000mails/semaine).
A noter: Les modules ftp, imap ne sont pas installés)

Et Donc: System et Rmdir son desactiver sur Free.fr
Need Help je suis entrain de fair une "Explorateur de Dossier" mais il me manque cette fonction, et je suis aussi malheuresement sur FREE, voici un lourd poid a payer pour la gratuité sans pub.

Je pensai aussi a un acce par FTP. pour effacer le dossier, Pas forcement en recursife, cela pouvant etre fait en adaptant un script ke jai trouver sur le net,:

?php
// Supprimer un fichier ou dossier FTP via son navigateur par
// l'adresse: http://votresite.org/efface.php?x=dossier/fichier.ext


$xx=$_GET['x'];
if($xx==''){ die("Parametre x oublié"); }


// si fichier
if(is_file($xx)){
chmod($xx,0777);
unlink($xx);
exit;
}
// si dossier ici on laisse le debut.
$xx=$_GET['x'].'/';
if(is_dir($xx)){
chmod($xx,0777);
$question=opendir($xx); // vider tout son contenu
while($fichier=readdir($question)){
if(is_file($xx.$fichier)){
chmod($xx.$fichier,0777);
unlink($xx.$fichier); }
}
closedir($question);
//Ici il suffirait de mettre notre supression via fonction FTP
//ou meme Verifier si rmdire est active ou pas et de la on change ce que l'on a besoin
//Soit rmdir soi la fonction FTP
rmdir($xx);
}


?
Messages postés
9
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
18 avril 2005

J'ai trouvé la fonction FTP, et son utilisation, je vous en fait profiter:Lien Pour expliquer le fonctionnement et les fonction FTP: http://php-tools.org/manuel-php/fonctions/ref.ftp.phpFonction:ftp_rmdir

(PHP 3>= 3.0.13, PHP 4 , PHP 5)ftp_rmdir -- Efface un dossier FTP

Descriptionbool ftp_rmdir ( resource ftp_stream, string directory)
ftp_rmdir() efface le dossier directory.
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.






Exemple 1. Exemple avec ftp_rmdir()



Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007

Hum, merci de ton aide, mais ca ne marche pas sur free.fr ca dit :
Fatal error: Call to undefined function: ftp_connect() in .....effacerDoss.php on line 6
Messages postés
9
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
18 avril 2005

a tu esssayer de nommmé ta page effacerDoss.php3
je nai pas encor pu tester car mon script "explorer" est encor a debbuger, mais des que jai le temp je le fait et je vous dit!
j'ai eu cette astuce dans un forum d'upload via FTP, mais ci free gere les upload FTP, grace a .php3 au lieu de .php
il doit pouvoir geré un ftp_mrdir
source:
187&print=1 http://www.phpindex.com/trucsetastuces/trucsetastuces_lire.php3?element=187&print=1

si sur free ca marche
,
----

<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>

----,
<TABLE cellSpacing=0 cellPadding=0 width=\"100%\" border=0>

----

</TD></TR></TBODY></TABLE> </TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=center width="20%" bgColor=#eeeeee colSpan=2> </TD>
<TD vAlign=center width="60%" bgColor=#eeeeee>par [mailto:reyanyan12@hotmail.com Kes ]</TD>
<TD vAlign =center align=right width="5%" bgColor=#eeeeee></TD>
<TD vAlign=center width="15%"> </TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=top width="100%" colSpan=5> </TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=top width="100%" colSpan=5>

En fait il faut renomer le fichier de php en php3 et par ailleurs de passer, comme c'est dit dans le tutorial, par une boite de dialogue qui demande quel est le fichier sur le disque dur qui sera uploadé
(la fonction )

En nommant les fichiers par leur nom directement, celà ne marche pas parce que je crois que pour des raisons de securité il sont stocké dans un endroit provisoir.
ca donne des noms de ficheirs bizarre, qui posent ensuite probleme une fois uploadé (n'apparait pas)
si on fixe un nom de fichier (ecriture) la ca marche.

perso je me sers de ça:

********index.html*******
<html>
<head>
</head>

<form method="post" ENCTYPE="multipart/form-data" action="form.php3">

</form>

**********************cut here**********

*******form.php3*******
<?
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

error_reporting (7);

echo ("
<style type="text/css"><!--
A:link {text-decoration: none;}
A:visited {text-decoration: none;}
A:active {text-decoration: none;}
A:hover {text-decoration: none; color:red;}
--></style>
");

$user = "user";
$pass = "pass";
$host = "ftpperso.free.fr";

if (strlen($dir)==0) $dir = "";

$c = ftp_connect ("$host");
$a = array ();
if ($c) {
echo ("connecte a $host
");
$l=ftp_login ($c,$user,$pass);
if ($l) {
echo ("$user logged in
");
$a = ftp_rawlist ($c,$dir);

//Upload du fichier
if (ftp_put($c, md5($file) , $file, FTP_BINARY))
{
echo "

fichier $file uploadé";
}
else
{
echo "

fichier" . $file . " non uploadé";
}
}
else {
echo ("wrong password");
}
ftp_quit ($c);
}

echo ("");
echo ("");

?>
*********cut here********

Bon c'est un melange d'un ça, et d'un autre truc qui m'a permit de sortir ce script je l'ai testé il suffit de changer les user/pass et une fois loadé sur free il marche.
A noter: vous pouvez specifier le ftp que vous voulez vous n'êtes pas obligé de vous connecter sur l'hebergeur de votre fichier php.
Les fichiers uen fois hebergé auront des nom de hash md5 (nom 32 chiffres de base hexadecimal)
C'est pour eviter de conner toujours le même nom et pour pas m'emmerder, à faire 36 fioritures pour donner un nom qui sera accepté


par Franck,
,
,
----

,
----

C'est parfait, j'ai suivi tous les conseils, pour free (upload.php3), ca marche

Ci quelqu'un a reussi faite moi signe s'il vous plait, merci.

</TD></TR></TBODY></TABLE>
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007

Merci pour l'astuce pour envoyer des fichier,

mais j'utilise deja une série de script php et aussi un programme en Vb que j'ai fais pour pouvoir gerer mon serveur free. J'ai créer un programme car j'habite au quebec et donc free.fr bloque les ip qui ne sont pas francaises ou de free donc mon programme marche, sauf que je ne peut pas effacer les dossiers... ce qui est embetant...

Mais le probleme avec ta maniere pour envoyer un fichier, c'est qu'il doit etre fait a la main via le formulaire html, tandis que moi j'envoit le fichier sur un ftp temporaire ( ftp.cf.geocities.com ) et apres le script php qui est sur mon serveur free copie le fichier du serveur temporraire en http et le met sur le mien donc cela donne la possibilité de le faire automatiquement via un script.
Messages postés
43
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
6 mars 2007

Comme tu avait dit, j'ai renommer le fichier en .php3 et ca ne marche pas plus, ca dit la même erreure.