Bonjour à tous
Quelqu'un pourait-il me dire quel fonction utiliser pour copier un répertoire et sont contenu ?
Bonjour à tous
Quelqu'un pourait-il me dire quel fonction utiliser pour copier un répertoire et sont contenu ?
Salut,
2 secondes de recherche
http://fr.php.net/manual/fr/function.copy.php
Cf le premier Commentaire...
Merci de rechercher avant de poster
On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
http://blog.plopix.net
http://www.ez-france.org
Un truc: copy() copie aussi le repertoire?
Il copies bien les fichiers mais va-t-il copier le repertoire avec ou renvoyer false?
Function copydirrEnvoyé par ..:: Atchoum ::..
On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
http://blog.plopix.net
http://www.ez-france.org
Bonjour et merci beaucoup
Je ne trouve pas copydirr ssur votre lien.
Fais une recherche "copydirr" sur la page si vraiment tu ne trouve pas
Sans doute ce code, mais je ne voi pas ou placer le répertoire a copier et la clible:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 function copydirr($fromDir,$toDir,$chmod=0757,$verbose=false) /* copies everything from directory $fromDir to directory $toDir and sets up files mode $chmod */ { //* Check for some errors $errors=array(); $messages=array(); if (!is_writable($toDir)) $errors[]='target '.$toDir.' is not writable'; if (!is_dir($toDir)) $errors[]='target '.$toDir.' is not a directory'; if (!is_dir($fromDir)) $errors[]='source '.$fromDir.' is not a directory'; if (!empty($errors)) { if ($verbose) foreach($errors as $err) echo '<strong>Error</strong>: '.$err.'<br />'; return false; } //*/ $exceptions=array('.','..'); //* Processing $handle=opendir($fromDir); while (false!==($item=readdir($handle))) if (!in_array($item,$exceptions)) { //* cleanup for trailing slashes in directories destinations $from=str_replace('//','/',$fromDir.'/'.$item); $to=str_replace('//','/',$toDir.'/'.$item); //*/ if (is_file($from)) { if (@copy($from,$to)) { chmod($to,$chmod); touch($to,filemtime($from)); // to track last modified time $messages[]='File copied from '.$from.' to '.$to; } else $errors[]='cannot copy file from '.$from.' to '.$to; } if (is_dir($from)) { if (@mkdir($to)) { chmod($to,$chmod); $messages[]='Directory created: '.$to; } else $errors[]='cannot create directory '.$to; copydirr($from,$to,$chmod,$verbose); } } closedir($handle); //*/ //* Output if ($verbose) { foreach($errors as $err) echo '<strong>Error</strong>: '.$err.'<br />'; foreach($messages as $msg) echo $msg.'<br />'; } //*/ return true; }
Il y a un exemple pourtant. Appelle la fonction comme ceci :
Sachant que dans cet exemple, tu dois copier le code de la fonction copydirr tel quel dans un fichier copydirr.inc.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php require('./copydirr.inc.php'); copydirr('./origine','./destination',0777,true); ?>
Il doit donc y avoir un autre fichier copydirr.inc.php qui contien un autre code ?
Oui ! C'est toi-meme qui le crée et qui mets dedans la déclaration de la fonction copydirr que tu as copié ci-dessus.
Donc je vien de créer le fichier copydirr.inc.php avec le code que j'ai cité plus haut, puis j'ai appeler la fonction comme vous me l'avez dit se qui me renvoi une erreur a la ligne 15 du ichier copydirr.inc.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function copydirr($fromDir,$toDir,$chmod=0757,$verbose=false) /* copies everything from directory $fromDir to directory $toDir and sets up files mode $chmod */ { //* Check for some errors $errors=array(); $messages=array(); if (!is_writable($toDir)) $errors[]='target '.$toDir.' is not writable'; if (!is_dir($toDir)) $errors[]='target '.$toDir.' is not a directory'; if (!is_dir($fromDir)) $errors[]='source '.$fromDir.' is not a directory'; if (!empty($errors)) { if ($verbose) foreach($errors as $err) echo 'Error: '.$err.' '; return false; } //*/ $exceptions=array('.','..'); //* Processing $handle=opendir($fromDir); while (false!==($item=readdir($handle))) if (!in_array($item,$exceptions)) { //* cleanup for trailing slashes in directories destinations $from=str_replace('//','/',$fromDir.'/'.$item); $to=str_replace('//','/',$toDir.'/'.$item); //*/ if (is_file($from)) { if (@copy($from,$to)) { chmod($to,$chmod); touch($to,filemtime($from)); // to track last modified time $messages[]='File copied from '.$from.' to '.$to; } else $errors[]='cannot copy file from '.$from.' to '.$to; } if (is_dir($from)) { if (@mkdir($to)) { chmod($to,$chmod); $messages[]='Directory created: '.$to; } else $errors[]='cannot create directory '.$to; copydirr($from,$to,$chmod,$verbose); } } closedir($handle); //*/ //* Output if ($verbose) { foreach($errors as $err) echo 'Error: '.$err.' '; foreach($messages as $msg) echo $msg.' '; } //*/ return true; } Fatal error: Call to undefined function: copydirr() in s:\www\copie.php on line 15
L'erreur est dans copie.php. On peut voir le contenu de ce fichier ?
copie.php et copydirr.inc.php sont bien dans le même répertoire ?
Oui les deux fichiers sont bien dans le même répertoire.
Voici le contenu du fichier copie.php:
J'ai dabors un code qui copi un seul fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php if (!copy('index.php', 'Ok/index.php')) { echo "La copie du fichier index.php n'a pas réussi...\n"; } require('copydirr.inc.php'); copydirr('Outils','Ok/Outils',0777,true); ?>
Je crois qu'il manque les balises PHP dans copydirr.inc.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3<php ?>
Effectivement je les avait oublier
Maitenant il n'y a plus le même erreur mais un simple erreur de ciblage qui me dit que 'Ok/Outils' n'est pas valide.
En fait cette fonction va te copier le contenu du repertoire d'origine dans le répertoire de destination. Il faut donc que les 2 répertoires existent.
Les deux répertoire existe.
Mais a savoir les fichiers de copie se trouve dans le répertoire cible par ce que je veut les copier eux aussi dans la fouler, voici le code exat:
Voici l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php if (!copy('index.php', '../Ok/index.php')) { echo "La copie du fichier index.php n'a pas réussi...\n"; } require('copydirr.inc.php'); copydirr('../Outils','../Ok/Outils',0777,true); ?>
Penssez vous que cela pose un problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ../Ok/Outils' is not writable
3 possibilités :
- le dossier n'existe pas
- le dossier n'est pas à l'adresse indiquée (ce ne serait pas ./ au lieu de ../ ?)
- le dossier n'a pas les droits en écriture
Si je ne mais qu'un seul point s'est encore pire.
Est le chmod 0777 qu'il y a dans la command eque fait-il ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager