Copier un repertoire non vide

yvesregis Messages postés 76 Statut Membre -  
yvesregis Messages postés 76 Statut Membre -
Bonjour,

Commen copier un repertoire non vide en PHP
A voir également:

19 réponses

mouf13 Messages postés 146 Statut Membre 17
 
plusieurs solutions : 1 tu copie ton répertoire principal, 2 tu ouvre ce répertoire et tu boucle en copiant chaque élément présent. copy()

2 si tu as exec disponible et que ton serveur utilise linux, tu peux tester un exec('cp -r mon_rep nouveau_rep')
0
yvesregis
 
je voudrais copier un répertoire dans un autre mais j'ai le message d'erreur siuvant

Warning: fopen(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/TLC/etudiant00000038): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 145

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/TLC/etudiant00000038): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 149
fichier non copié


voici un bout de mon code :
$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'] ;
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/'.$tableau['codefil'];
if(copy($source, $destination ) )
0
yvesregis
 
voici un bout de mon code

$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'] ;
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/'.$tableau['codefil'];
if(copy($source, $destination ) )
{/*Start hiding from IE Mac \*/
/*Stop hiding from IE Mac */

echo 'fichier copié ' ;
}
else
{

echo 'fichier non copié ' ;
}
0
mouf13 Messages postés 146 Statut Membre 17
 
fopen sert a ouvrire un fichier, non un repertoire
utilise readdir comme sur l'exemple de la doc :
<?php

if ($handle = opendir('/chemin/vers/fichiers')) {
echo "Directory handle: $handle\n";
echo "Files:\n";

/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}

/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$file\n";
}

closedir($handle);
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yvesregis
 
donc , dis moi , comment copier mon repertoire alore .
0
mouf13 Messages postés 146 Statut Membre 17
 
if ($handle = opendir('/chemin/vers/fichiers')) {
while (false !== ($file = readdir($handle))) {
copy($file, $destination);
}
}
0
yvesregis
 
ça ne marche pas , voici le message d'erreur

Warning: copy(.): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164

Warning: copy(..): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164

Warning: copy(emploi_du_temps_personnel.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164

Warning: copy(INSCRIPTION DES ETUDIANTS EN LIGN.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164


Voici commen j'ai adapté ton code

voici la source et la destination
$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'] ;
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/'.$tableau['codefil'];

voici lecode définitif
If ($handle = opendir($source)) {
while (false !== ($file = readdir($handle))) {
copy($file, $destination);
}
}
0
mouf13 Messages postés 146 Statut Membre 17
 
if($handle = opendir($source)) {
while (false !== ($file = readdir($handle))) {
if(!copy($source.$file, $destination.$file)) {
print_r(array($source.$file, $destination.$file));
}
}
}
0
yvesregis
 
ça ne marche toujours pas , voici le message d'erreur .



Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041.): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRA. )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041..): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041.. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRA.. )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041extrait_naissance.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041extrait_naissance.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAextrait_naissance.docx )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041questions_commerce_electronique.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041questions_commerce_electronique.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAquestions_commerce_electronique.docx )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041TELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041TELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRATELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx )

0
mouf13 Messages postés 146 Statut Membre 17
 
If($handle = opendir($source)) {
while (false !== ($file = readdir($handle))) {
if($file != '.' && $file != '..') {
if(!copy($source.$file, $destination.$file)) {
print_r(array($source.$file, $destination.$file));
}
}
}
}

Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041questions_commerce_electronique.docx [1]

es tu sur de tes 2 chemins manque pas un slashes entre /etudiant00000041 et questions_commerce_electronique.docx ?

Lie les messages d'erreurs qui sont tres explicites !
0
yvesregis Messages postés 76 Statut Membre 26
 
je viens de les ajouter

$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'].'/' ;
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/'.$tableau['codefil'].'/';

mais , j'ai toujours ce message :

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/.): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRA. )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/..): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/.. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRA.. )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAextrait_naissance.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/extrait_naissance.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAextrait_naissance.docx )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAquestions_commerce_electronique.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/questions_commerce_electronique.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAquestions_commerce_electronique.docx )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRATELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/TELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRATELECHARGERBILAN SECRETARIAT A LA COMMUNICATION.docx )
0
mouf13 Messages postés 146 Statut Membre 17
 
tu n'as pas ajouté cette ligne qui t'enlevera les 2 premiers msg d erreur
if($file != '.' && $file != '..') {

quant à
Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAextrait_naissance.docx): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/CIRA/etudiant00000041/extrait_naissance.docx [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitfs/CIRAextrait_naissance.docx )

failed to open stream: n'arrive pas a ouvrir le flux -> ton path source n'est pas bon
0
yvesregis Messages postés 76 Statut Membre 26
 
je suis sur windows , dois je remplacer / par \
0
mouf13 Messages postés 146 Statut Membre 17
 
non

est ce que t aurai pas fait une faute de frappe : definitfs -> definitifs ?
0
yvesregis Messages postés 76 Statut Membre 26
 
je viens de rectifier

$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'];
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/'.$tableau['codefil'];

mais j'ai toujours

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030.): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/2IM. )

Warning: copy(C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030..): failed to open stream: Permission denied in c:\program files\easyphp1-8\www\mon_projet\pages\valider_inscription.php on line 164
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030.. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/2IM.. )
0
mouf13 Messages postés 146 Statut Membre 17
 
quelle patience....
dans ton code on a fait un test, si la copy ne marche pas affiche moi les chemin complet en source et en destination soit :
Array ( [0] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030. [1] => C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/2IM. )

EST QUE C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/2IM/etudiant00000030. existe ? reponse non qu'as tu fait de la condition :
if($file != '.' && $file != '..') { qui permet de ne pas compier ces "faux repertoires" qui ne servent qu'a la navigation
0
yvesregis Messages postés 76 Statut Membre 26
 
je peux bien faire une boucle , mais les fihiers ne sont même pas créés
0
yvesregis Messages postés 76 Statut Membre 26
 
Voici les chemins

$source='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'].'/';
$destination='C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/'.$tableau['codefil'];
0
yvesregis Messages postés 76 Statut Membre 26
 
$source=
'C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etu/'.$tableau['codefil'].'/'.'etudiant'.$reponse['id'].'/';
$destination=
'C:/Program Files/EasyPHP1-8/www/mon_projet/fichiers_etudiants_definitifs/'.$tableau['codefil'];
0