PHP Rename un dossier
Résolu/Fermé
A voir également:
- Php rename directory
- Lupas rename - Télécharger - Gestion de fichiers
- Directory list & print - Télécharger - Divers Utilitaires
- Bulk rename utility - Télécharger - Gestion de fichiers
- Easy php - Télécharger - Divers Web & Internet
- A-pdf rename - Télécharger - PDF
10 réponses
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 18:18
22 nov. 2010 à 18:18
si tu changes ton rename pour :
à moins qu'il y ait un dossier admin dans le dossier admin ?
rename("UploadedFiles/Cuisine et saveurs", "UploadedFiles/Cuisine sans saveur"); ou : rename("./UploadedFiles/Cuisine et saveurs", "./UploadedFiles/Cuisine sans saveur");
à moins qu'il y ait un dossier admin dans le dossier admin ?
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 16:18
22 nov. 2010 à 16:18
Donc tu es sûr que le chemin vers les dossiers $old_rep et $new_rep existe ?
Parce que dans ton warning, il semble que old_name soit situé dans dossier1/dossier2/, alors que new_name est situé dans admin/dossier2/. Peut-être que le dossier admin n'existe pas ? Je ne sais pas si c'était voulu de nous afficher ça...
Fais un if() supplémentaire pour t'assurer que le dossier de destination (dans lequel tu veux mettre ton $new_name) existe.
Veux-tu utiliser le rename() pour renommer, ou pour déplacer ?
Et es-tu certain(e) d'avoir les permissions pour renommer le dossier ? Si tu es sur un hébergeur distant, il peut être nécessair de faire au moins un chmod() au préalable.
Reviens-nous là-dessus...
Parce que dans ton warning, il semble que old_name soit situé dans dossier1/dossier2/, alors que new_name est situé dans admin/dossier2/. Peut-être que le dossier admin n'existe pas ? Je ne sais pas si c'était voulu de nous afficher ça...
Fais un if() supplémentaire pour t'assurer que le dossier de destination (dans lequel tu veux mettre ton $new_name) existe.
Veux-tu utiliser le rename() pour renommer, ou pour déplacer ?
Et es-tu certain(e) d'avoir les permissions pour renommer le dossier ? Si tu es sur un hébergeur distant, il peut être nécessair de faire au moins un chmod() au préalable.
Reviens-nous là-dessus...
Bonjour et merci de ta réponse rapide.
Effectivement, petite erreur avec le "admin" corrigée. J'ai renommé ces dossiers pour plus de clarté dans ce bout de code, et un dossier est passé à l'as...
Mon dossier de destination existe bien.
Je veux renommer un dossier existant, pas le déplacer.
le chmod est à 0777.
voilou pour les précisions... et merci de l'intérêt
Effectivement, petite erreur avec le "admin" corrigée. J'ai renommé ces dossiers pour plus de clarté dans ce bout de code, et un dossier est passé à l'as...
Mon dossier de destination existe bien.
Je veux renommer un dossier existant, pas le déplacer.
le chmod est à 0777.
voilou pour les précisions... et merci de l'intérêt
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 17:05
22 nov. 2010 à 17:05
Ce que je vois de ton code me semble correct. D'après moi il existe deux possibilités :
1. Erreur de syntaxe que je ne peux pas voir vu que tu nous donnes des noms modifiés (honnêtement je doute que ce soit ça) ;
2. Plus probable : problèmes de permissions avec ton hébergeur. Le chmod() ne change pas toujours efficacement les permissions, sinon ce serait trop facile d'enfreindre la sécurité d'un site. Tu pourrais aller dans le file manager de ton site et voir les permissions qui y sont, et tester si chmod() change vraiment quelque chose.
Laisse-nous savoir comment ça va tout ça ! ;)
1. Erreur de syntaxe que je ne peux pas voir vu que tu nous donnes des noms modifiés (honnêtement je doute que ce soit ça) ;
2. Plus probable : problèmes de permissions avec ton hébergeur. Le chmod() ne change pas toujours efficacement les permissions, sinon ce serait trop facile d'enfreindre la sécurité d'un site. Tu pourrais aller dans le file manager de ton site et voir les permissions qui y sont, et tester si chmod() change vraiment quelque chose.
Laisse-nous savoir comment ça va tout ça ! ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
là je travaille en local avec Wamp... et je ne vois pas où trouver le file manager... je suis une bille excusez moi...
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 17:44
22 nov. 2010 à 17:44
Ok si tu travailles en local il n'y a pas de file manager, j'avais seulement assumé que tu bossais sur un hébergeur...
Si j'en crois ton erreur, ça ne peut être qu'une erreur de chemin.
Est-ce qu'il y a des caractères accentués dans tes noms de dossier ?
Es-tu sûr(e) de ne pas avoir de double-slash ("//") dans tes chemins ? Des fois avec les répétitions...
Utilises-tu des chemins relatifs ou absolus ?
En fait, est-ce que ça te dérangerait de me copier le message d'erreur exact ? Peut-être que ça me donnerait un insight que je n'aurais pas autrement... Parce que sinon, j'avoue humblement que je commence à manquer d'idées... :S
Mais pour le moment, NEVER GIVE UP, NEVER SURRENDER ! ;)
Si j'en crois ton erreur, ça ne peut être qu'une erreur de chemin.
Est-ce qu'il y a des caractères accentués dans tes noms de dossier ?
Es-tu sûr(e) de ne pas avoir de double-slash ("//") dans tes chemins ? Des fois avec les répétitions...
Utilises-tu des chemins relatifs ou absolus ?
En fait, est-ce que ça te dérangerait de me copier le message d'erreur exact ? Peut-être que ça me donnerait un insight que je n'aurais pas autrement... Parce que sinon, j'avoue humblement que je commence à manquer d'idées... :S
Mais pour le moment, NEVER GIVE UP, NEVER SURRENDER ! ;)
merci de tes réponses tout dabord.
Ensuite voilà l'erreur:
Warning: rename(admin/UploadedFiles/Cuisine et saveurs,admin/UploadedFiles/Cuisine sans saveur) [function.rename]: No such file or directory in C:\wamp\www\cuisine\admin\utilisateurs.php on line 346
et j'aimerais être aussi optimiste que toi mais j'avoue, en toute bienséance, que ça commence à me courrir sur le haricot cette histoire... et mon dossier qui me regarde avec son vieux nom...
Ensuite voilà l'erreur:
Warning: rename(admin/UploadedFiles/Cuisine et saveurs,admin/UploadedFiles/Cuisine sans saveur) [function.rename]: No such file or directory in C:\wamp\www\cuisine\admin\utilisateurs.php on line 346
et j'aimerais être aussi optimiste que toi mais j'avoue, en toute bienséance, que ça commence à me courrir sur le haricot cette histoire... et mon dossier qui me regarde avec son vieux nom...
Allez j'en rajoute un peu... :)
j'ai essayé la suppression de dossier lorsque ceux ci ne sont pas vides grace à un petit bout de code trouvé sur la grande toile.
Bon, ça ne marche pas non plus. j'ai essayé de remplacer aussi le $file par mon $doss mais rien n'y fait...
je mets ici les erreurs retournées pour ce second problème, au cas où celà aiderait à solutionner le 1er...
Warning: opendir(admin/UploadedFiles/Confidentiel) [function.opendir]: failed to open dir: No error in C:\wamp\www\cuisine\admin\utilisateurs.php on line 361
Warning: readdir(): supplied argument is not a valid Directory resource in C:\wamp\www\cuisine\admin\utilisateurs.php on line 362
Warning: closedir(): supplied argument is not a valid Directory resource in C:\wamp\www\cuisine\admin\utilisateurs.php on line 366
Warning: rmdir(admin/UploadedFiles/Confidentiel) [function.rmdir]: No such file or directory in C:\wamp\www\cuisine\admin\utilisateurs.php on line 367
j'ai essayé la suppression de dossier lorsque ceux ci ne sont pas vides grace à un petit bout de code trouvé sur la grande toile.
$id=$_POST['id']; $doss=$_POST['doss']; //supression du dossier $chemin="admin/UploadedFiles/$doss"; // <- Nom_du_dossier_a_supprimer $dir = opendir($chemin); while($file = readdir($dir)) { unlink($chemin . "/" . $file); } closedir($dir); rmdir($chemin);
Bon, ça ne marche pas non plus. j'ai essayé de remplacer aussi le $file par mon $doss mais rien n'y fait...
je mets ici les erreurs retournées pour ce second problème, au cas où celà aiderait à solutionner le 1er...
Warning: opendir(admin/UploadedFiles/Confidentiel) [function.opendir]: failed to open dir: No error in C:\wamp\www\cuisine\admin\utilisateurs.php on line 361
Warning: readdir(): supplied argument is not a valid Directory resource in C:\wamp\www\cuisine\admin\utilisateurs.php on line 362
Warning: closedir(): supplied argument is not a valid Directory resource in C:\wamp\www\cuisine\admin\utilisateurs.php on line 366
Warning: rmdir(admin/UploadedFiles/Confidentiel) [function.rmdir]: No such file or directory in C:\wamp\www\cuisine\admin\utilisateurs.php on line 367
Cooooooooooooooooooooooooooooool
Bingo bravo oui c'est ça ! Génial... Top.
1ère solution op. D'ailleurs la seconde marche tout aussi bien.
Impec, me voilà refaite et ravie.
Bon je vais chercher un peu de ce côté là pour la suppression...
Merci coeus pour tes conseils, ton aide et le temps passé.
Excellente soirée et merci encore pour l'épine... mon pti dossier fais moins le malin maintenant... qu'il se méfie, je pourrait bien le supprimer un de ces 4 matins...
Bingo bravo oui c'est ça ! Génial... Top.
1ère solution op. D'ailleurs la seconde marche tout aussi bien.
Impec, me voilà refaite et ravie.
Bon je vais chercher un peu de ce côté là pour la suppression...
Merci coeus pour tes conseils, ton aide et le temps passé.
Excellente soirée et merci encore pour l'épine... mon pti dossier fais moins le malin maintenant... qu'il se méfie, je pourrait bien le supprimer un de ces 4 matins...
YvonSita
Messages postés
3
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
3 décembre 2012
3 déc. 2012 à 12:54
3 déc. 2012 à 12:54
Bjr CIR, tu as posé un problème que j'aie actuellement; tu as mis le bout de code qui ne marchait pas et tu as eu les réponses. Mais je crois que ce serait plus intéressant aussi si tu mettais la réponse afin que d'autres voient aussi la solution que tu as reçue sur ce forum.
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 18:32
22 nov. 2010 à 18:32
Hahaha excellent ! Content d'avoir pu t'aider ! :)
N'oublie pas de mettre le sujet à Résolu, si ce n'est pas déjà fait ;)
Bonne soirée à toi aussi !
N'oublie pas de mettre le sujet à Résolu, si ce n'est pas déjà fait ;)
Bonne soirée à toi aussi !
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
22 nov. 2010 à 18:45
22 nov. 2010 à 18:45
Juste en-dessous du titre "PHP Rename un dossier", tu as un lien "Marquer comme résolu" ;)
YvonSita
Messages postés
3
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
3 décembre 2012
Modifié par YvonSita le 3/12/2012 à 13:48
Modifié par YvonSita le 3/12/2012 à 13:48
Bonjour, j'ai un véritable problème pour renommer un dossier physiquement. Logiquement, çà marche, avec UPDATE, mais pas physiquement. Mon problème se situe dans la partie où j'ai mis mon code en gras, question de mieux situer ma difficulté. Pouvez-vous m'aider?
Voici mon code : j'ai une table appelée "dossier" dans laquelle il y a tous les champs que vous voyez là ci-dessous.
<?php
$id = $_POST['id'];
$actif = $_POST['actif'];
$sys_ins_date = $_POST['sys_ins_date'];
$sys_upd_date = $_POST['sys_upd_date'];
$sys_del_date = $_POST['sys_del_date'];
$sys_ins_user = $_POST['sys_ins_user'];
$sys_upd_user = $_POST['sys_upd_user'];
$numero = $_POST['numero'];
$libelle = $_POST['libelle'];
$new_libelle = $_POST['new_libelle'];
$id_agt = $_POST['id_agt'];
$nomfull_agt = $_POST['nomfull_agt'];
$id_entite = $_POST['id_entite'];
$code_org = $_POST['code_org'];
$code_div = $_POST['code_div'];
$service = $_POST['service'];
$niv_conf = $_POST['niv_conf'];
$priorite = $_POST['priorite'];
$id_agt_resp = $_POST['id_agt_resp'];
$nomfull_agt_resp = $_POST['nomfull_agt_resp'];
$code_org_resp = $_POST['code_org_resp'];
$code_div_resp = $_POST['code_div_resp'];
$service_resp = $_POST['service_resp'];
$id_agt_dest = $_POST['id_agt_dest'];
$nomfull_agt_dest = $_POST['nomfull_agt_dest'];
$code_org_dest = $_POST['code_org_dest'];
$code_div_dest = $_POST['code_div_dest'];
$service_dest = $_POST['service_dest'];
$type = $_POST['type'];
$categorie = $_POST['categorie'];
$genre = $_POST['genre'];
$resume = $_POST['resume'];
$traitement = $_POST['traitement'];
$recommandation = $_POST['recommandation'];
$dtdebut = $_POST['dtdebut'];
$dtstatut = $_POST['dtstatut'];
$dtmaj = $_POST['dtmaj'];
include('lisaApp/connexion.php');
$url = "archives/dossiers/";
$doc = $libelle;
$doc_modif = $url.$doc;
$doc2 = $new_libelle;
$doc_modif2 = $url.$doc2;
$sql = mysql_query('SELECT id,libelle FROM dossier WHERE id = "'.$id.'" AND libelle = "'.$libelle.'" ');
while($data = mysql_fetch_array($sql))
{
$old_libelle = $data['libelle'];
$doc_modif = $url.$doc;
}
if (!is_dir($doc_modif2)) rename($doc_modif, $doc_modif2);
$req = mysql_query('UPDATE dossier SET actif = "'.$actif.'", sys_ins_date = "'.$sys_ins_date.'", sys_upd_date = "'.$sys_upd_date.'", sys_del_date = "'.$sys_del_date.'", sys_ins_user = "'.$sys_ins_user.'", sys_upd_user = "'.$sys_upd_user.'", numero = "'.$numero.'", libelle = "'.$libelle.'", new_libelle = "'.$new_libelle.'", id_agt = "'.$id_agt.'", nomfull_agt = "'.$nomfull_agt.'", id_entite = "'.$id_entite.'", code_org = "'.$code_org.'", code_div = "'.$code_div.'", service = "'.$service.'", niv_conf = "'.$niv_conf.'", priorite = "'.$priorite.'", id_agt_resp = "'.$id_agt_resp.'", nomfull_agt_resp = "'.$nomfull_agt_resp.'", code_org_resp = "'.$code_org_resp.'", code_div_resp = "'.$code_div_resp.'", service_resp = "'.$service_resp.'", id_agt_dest = "'.$id_agt_dest.'", nomfull_agt_dest = "'.$nomfull_agt_dest.'", code_org_dest = "'.$code_org_dest.'", code_div_dest = "'.$code_div_dest.'", service_dest = "'.$service_dest.'", type = "'.$type.'", categorie = "'.$categorie.'", genre = "'.$genre.'", resume = "'.$resume.'", traitement = "'.$traitement.'", recommandation = "'.$recommandation.'", dtdebut = "'.$dtdebut.'", dtstatut = "'.$dtstatut.'", dtmaj = "'.$dtmaj.'" WHERE id = "'.$id.'" ');
if($req)
{
?>
<script language="javascript">
alert('Dossier modifié avec succès');
window.close();
if(window.opener && !window.opener.closed)
{
window.opener.location.reload();
}
</script>
<?php
}
else
{
?>
<script language="javascript">
alert('La modification a échoué');
window.close();
</script>
<?php
}
?>
Voici mon code : j'ai une table appelée "dossier" dans laquelle il y a tous les champs que vous voyez là ci-dessous.
<?php
$id = $_POST['id'];
$actif = $_POST['actif'];
$sys_ins_date = $_POST['sys_ins_date'];
$sys_upd_date = $_POST['sys_upd_date'];
$sys_del_date = $_POST['sys_del_date'];
$sys_ins_user = $_POST['sys_ins_user'];
$sys_upd_user = $_POST['sys_upd_user'];
$numero = $_POST['numero'];
$libelle = $_POST['libelle'];
$new_libelle = $_POST['new_libelle'];
$id_agt = $_POST['id_agt'];
$nomfull_agt = $_POST['nomfull_agt'];
$id_entite = $_POST['id_entite'];
$code_org = $_POST['code_org'];
$code_div = $_POST['code_div'];
$service = $_POST['service'];
$niv_conf = $_POST['niv_conf'];
$priorite = $_POST['priorite'];
$id_agt_resp = $_POST['id_agt_resp'];
$nomfull_agt_resp = $_POST['nomfull_agt_resp'];
$code_org_resp = $_POST['code_org_resp'];
$code_div_resp = $_POST['code_div_resp'];
$service_resp = $_POST['service_resp'];
$id_agt_dest = $_POST['id_agt_dest'];
$nomfull_agt_dest = $_POST['nomfull_agt_dest'];
$code_org_dest = $_POST['code_org_dest'];
$code_div_dest = $_POST['code_div_dest'];
$service_dest = $_POST['service_dest'];
$type = $_POST['type'];
$categorie = $_POST['categorie'];
$genre = $_POST['genre'];
$resume = $_POST['resume'];
$traitement = $_POST['traitement'];
$recommandation = $_POST['recommandation'];
$dtdebut = $_POST['dtdebut'];
$dtstatut = $_POST['dtstatut'];
$dtmaj = $_POST['dtmaj'];
include('lisaApp/connexion.php');
$url = "archives/dossiers/";
$doc = $libelle;
$doc_modif = $url.$doc;
$doc2 = $new_libelle;
$doc_modif2 = $url.$doc2;
$sql = mysql_query('SELECT id,libelle FROM dossier WHERE id = "'.$id.'" AND libelle = "'.$libelle.'" ');
while($data = mysql_fetch_array($sql))
{
$old_libelle = $data['libelle'];
$doc_modif = $url.$doc;
}
if (!is_dir($doc_modif2)) rename($doc_modif, $doc_modif2);
$req = mysql_query('UPDATE dossier SET actif = "'.$actif.'", sys_ins_date = "'.$sys_ins_date.'", sys_upd_date = "'.$sys_upd_date.'", sys_del_date = "'.$sys_del_date.'", sys_ins_user = "'.$sys_ins_user.'", sys_upd_user = "'.$sys_upd_user.'", numero = "'.$numero.'", libelle = "'.$libelle.'", new_libelle = "'.$new_libelle.'", id_agt = "'.$id_agt.'", nomfull_agt = "'.$nomfull_agt.'", id_entite = "'.$id_entite.'", code_org = "'.$code_org.'", code_div = "'.$code_div.'", service = "'.$service.'", niv_conf = "'.$niv_conf.'", priorite = "'.$priorite.'", id_agt_resp = "'.$id_agt_resp.'", nomfull_agt_resp = "'.$nomfull_agt_resp.'", code_org_resp = "'.$code_org_resp.'", code_div_resp = "'.$code_div_resp.'", service_resp = "'.$service_resp.'", id_agt_dest = "'.$id_agt_dest.'", nomfull_agt_dest = "'.$nomfull_agt_dest.'", code_org_dest = "'.$code_org_dest.'", code_div_dest = "'.$code_div_dest.'", service_dest = "'.$service_dest.'", type = "'.$type.'", categorie = "'.$categorie.'", genre = "'.$genre.'", resume = "'.$resume.'", traitement = "'.$traitement.'", recommandation = "'.$recommandation.'", dtdebut = "'.$dtdebut.'", dtstatut = "'.$dtstatut.'", dtmaj = "'.$dtmaj.'" WHERE id = "'.$id.'" ');
if($req)
{
?>
<script language="javascript">
alert('Dossier modifié avec succès');
window.close();
if(window.opener && !window.opener.closed)
{
window.opener.location.reload();
}
</script>
<?php
}
else
{
?>
<script language="javascript">
alert('La modification a échoué');
window.close();
</script>
<?php
}
?>
Pour ceux que ça intéresse, comment supprimer un dossier et tous les fichiers qu'il contient:
Petite question subsidiaire dans la foulée :
j'avais une erreur du type :
"Warning: unlink(Repertoire1/Confidentiel/.) [function.unlink]: Permission denied in C:\wamp\www\cuisine\admin\utilisateurs.php on line 364
Warning: unlink(Repertoire1/Confidentiel/..) [function.unlink]: Permission denied in C:\wamp\www\cuisine\admin\utilisateurs.php on line 364"
jusqu'à ce que je mette l'@ devant le unlink... ensuite plus d'erreur et tout se fait correctement pourtant
à quoi ça sert en fait ce @? quelqu'un a une idée?
//supression du dossier $doss="nom_du_dossier" $chemin="Repertoire1/$doss"; // <- Nom_et_chemin_depuis_cette_page_du_dossier_a_supprimer $dir = opendir($chemin); while($file = readdir($dir)) { @unlink($chemin ."/". $file); } closedir($dir); rmdir($chemin);
Petite question subsidiaire dans la foulée :
j'avais une erreur du type :
"Warning: unlink(Repertoire1/Confidentiel/.) [function.unlink]: Permission denied in C:\wamp\www\cuisine\admin\utilisateurs.php on line 364
Warning: unlink(Repertoire1/Confidentiel/..) [function.unlink]: Permission denied in C:\wamp\www\cuisine\admin\utilisateurs.php on line 364"
jusqu'à ce que je mette l'@ devant le unlink... ensuite plus d'erreur et tout se fait correctement pourtant
à quoi ça sert en fait ce @? quelqu'un a une idée?