Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
essaie de lancer un .bat avec des arguments figés pour voir.
Paul
en PHP, moi je ferais pas comme cela, en fait je n'utiliserais pas la mé thode "Exec" (qui peut etre désactivée sur certains serveur d'ailleur)
voici la méthode que j'utiliserai :
1. ouvrir le dossier (avec chdir() je crois, en PHP) 2. boucle sur tous les fichiers (sauf . et ..) 3. copier les fichiers un à un (on est dans la boucle) en PHP, avec la méthode copy()
Le 17 Sep 2004 22:51:16 GMT "seb" vous écriviez :
bonjour,
j'ai une fonction qui doit copier un répertoire.
Sous linux, no pb avec: exec('cp -R /source /dest');
Sous Windows: exec('xcopy C:source C:dest /e/i'); ne marche pas (ni system, ni passthru) alors que en ligne de commande ça passe
par contre: exec('copy C:source.jpg C:dest.jpg'); ça fonctionne
Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
seb
en PHP, moi je ferais pas comme cela, en fait je n'utiliserais pas la mé
thode "Exec" (qui peut etre désactivée sur certains serveur d'ailleur)
voici la méthode que j'utiliserai :
1. ouvrir le dossier (avec chdir() je crois, en PHP)
2. boucle sur tous les fichiers (sauf . et ..)
3. copier les fichiers un à un (on est dans la boucle) en PHP, avec la
méthode copy()
en PHP, moi je ferais pas comme cela, en fait je n'utiliserais pas la mé thode "Exec" (qui peut etre désactivée sur certains serveur d'ailleur)
voici la méthode que j'utiliserai :
1. ouvrir le dossier (avec chdir() je crois, en PHP) 2. boucle sur tous les fichiers (sauf . et ..) 3. copier les fichiers un à un (on est dans la boucle) en PHP, avec la méthode copy()
Le 17 Sep 2004 22:51:16 GMT "seb" vous écriviez :
bonjour,
j'ai une fonction qui doit copier un répertoire.
Sous linux, no pb avec: exec('cp -R /source /dest');
Sous Windows: exec('xcopy C:source C:dest /e/i'); ne marche pas (ni system, ni passthru) alors que en ligne de commande ça passe
par contre: exec('copy C:source.jpg C:dest.jpg'); ça fonctionne
Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
seb
P'tit Marcel
j'ai une fonction qui doit copier un répertoire.
Sous Windows: exec('xcopy C:source C:dest /e/i'); ne marche pas (ni system, ni passthru) alors que en ligne de commande ça passe
par contre: exec('copy C:source.jpg C:dest.jpg'); ça fonctionne
Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
à mon avis, copy est une commande interne du DOS (native dans le COMMAND.COM) alors que xcopy est un exécutable. J'imagine que ta commande exec est exécutée sans un environnement en place comprenant les PATH kivonbien et que de ce fait l'exécutable xcopy n'est pas trouvé.
sur le fond, je partage l'opinion de Paul : fait plutot une boucle en php, ça marchera sur toutes les plate formes (au lieu d'avoir une variante par OS) et n'exige pas d'accès à la ligne de commande.
donc tu devrais faire un truc du genre :
function copie_repertoire($rep, $rep2) { if (is_dir($rep)) { if(!file_exists($rep2)) mkdir($rep2); if (is_writable($rep2) and ($dh = opendir($rep)) { while (($fichier = readdir($dh)) !== false) { if(is_file($fichier)) { copy("$rep/$fichier", "$rep2/$fichier"); } if(is_dir($fichier) and ($fichier <> '.') and ($fichier <> '..')) { copie_repertoire("$rep/$fichier", "$rep2/$fichier"); } } closedir($dh); } } }
(non testé)
j'ai une fonction qui doit copier un répertoire.
Sous Windows:
exec('xcopy C:source C:dest /e/i');
ne marche pas (ni system, ni passthru) alors que en ligne de commande ça
passe
par contre:
exec('copy C:source.jpg C:dest.jpg');
ça fonctionne
Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
à mon avis, copy est une commande interne du DOS (native dans le
COMMAND.COM) alors que xcopy est un exécutable. J'imagine que ta
commande exec est exécutée sans un environnement en place comprenant les
PATH kivonbien et que de ce fait l'exécutable xcopy n'est pas trouvé.
sur le fond, je partage l'opinion de Paul : fait plutot une boucle en
php, ça marchera sur toutes les plate formes (au lieu d'avoir une
variante par OS) et n'exige pas d'accès à la ligne de commande.
donc tu devrais faire un truc du genre :
function copie_repertoire($rep, $rep2) {
if (is_dir($rep)) {
if(!file_exists($rep2)) mkdir($rep2);
if (is_writable($rep2) and ($dh = opendir($rep)) {
while (($fichier = readdir($dh)) !== false) {
if(is_file($fichier)) {
copy("$rep/$fichier", "$rep2/$fichier");
}
if(is_dir($fichier)
and ($fichier <> '.') and ($fichier <> '..')) {
copie_repertoire("$rep/$fichier", "$rep2/$fichier");
}
}
closedir($dh);
}
}
}
Sous Windows: exec('xcopy C:source C:dest /e/i'); ne marche pas (ni system, ni passthru) alors que en ligne de commande ça passe
par contre: exec('copy C:source.jpg C:dest.jpg'); ça fonctionne
Il y a un pb avec xcopy et php ou je fais une bête erreur de synthaxe ?
à mon avis, copy est une commande interne du DOS (native dans le COMMAND.COM) alors que xcopy est un exécutable. J'imagine que ta commande exec est exécutée sans un environnement en place comprenant les PATH kivonbien et que de ce fait l'exécutable xcopy n'est pas trouvé.
sur le fond, je partage l'opinion de Paul : fait plutot une boucle en php, ça marchera sur toutes les plate formes (au lieu d'avoir une variante par OS) et n'exige pas d'accès à la ligne de commande.
donc tu devrais faire un truc du genre :
function copie_repertoire($rep, $rep2) { if (is_dir($rep)) { if(!file_exists($rep2)) mkdir($rep2); if (is_writable($rep2) and ($dh = opendir($rep)) { while (($fichier = readdir($dh)) !== false) { if(is_file($fichier)) { copy("$rep/$fichier", "$rep2/$fichier"); } if(is_dir($fichier) and ($fichier <> '.') and ($fichier <> '..')) { copie_repertoire("$rep/$fichier", "$rep2/$fichier"); } } closedir($dh); } } }