beh il titolo dice tutto
esiste una function di php con la quale posso copiare tutto il contenuto di una cartella sul server in u'altra cartella sempre sul server?
grazie![]()
beh il titolo dice tutto
esiste una function di php con la quale posso copiare tutto il contenuto di una cartella sul server in u'altra cartella sempre sul server?
grazie![]()
no ma puoi scrivertela...
... ti risparmio la fatica
è molto rudimentale ma funziona, non controlla se esista la dircodice:function copyRecursive($source, $dest) { $source = str_replace('\\', '/', $source); $dest = str_replace('\\', '/', $dest); $dir = basename($source); mkdir($dest); $contenuto_dir = glob($source."*"); foreach($contenuto_dir as $val) { $val = str_replace('\\', '/', $val); if(is_dir($val)) { $sorgente = $val.'/'; $destinazione = $dest.basename($val).'/'; Utility::copyRecursive($sorgente, $destinazione); } else { copy($val, $dest.basename($val)); } } } $source = "/dir/" $dest = "/dir2/" Utility::copyrecursive($source, $dest);
grazie 1000 mi sarà proprio utile ora la provo poi ti faccio sapere
scusa non sono programmatore ma mi piace capire le cose... qual'è la parte di codice a cui dici prendi tutti i file? "*" questa?
si, guardati la funzione :Originariamente inviato da supermix
grazie 1000 mi sarà proprio utile ora la provo poi ti faccio sapere
scusa non sono programmatore ma mi piace capire le cose... qual'è la parte di codice a cui dici prendi tutti i file? "*" questa?
http://fr.php.net/manual/en/function.glob.php
ciao
c'è qualche problema nello script ... si incasina con gli apistrofi nella parte dove gli si dice di invertire le sbarre / \
dunque risolto il problema mettendo \\ doppio e aggiungendo il ; alla variabili source e dest
<?php
function copyRecursive($source, $dest) {
$source = str_replace('\\', '/', $source);
$dest = str_replace('\\', '/', $dest);
$dir = basename($source);
mkdir($dest);
$contenuto_dir = glob($source."*");
foreach($contenuto_dir as $val) {
$val = str_replace('\\', '/', $val);
if(is_dir($val)) {
$sorgente = $val.'/';
$destinazione = $dest.basename($val).'/';
Utility::copyRecursive($sorgente, $destinazione);
} else {
copy($val, $dest.basename($val));
}
}
}
$source = "/dir1/";
$dest = "/dir2/";
Utility::copyRecursive($source, $dest); //*LINEA 80
?>
ora il problema è un altro e qui chiedo a voi perchè non capisco neanche il tipo di errore
ecco cosa mi rilascia il server
Fatal error: Undefined class name 'utility' in /membri/supermix01/sposta.php on line 80
ho copiato velocemente il codice, faceva parte di una classe che mi sono scritto.
usalo semplicemente cosi:
copyRecursive($source, $dest);
e dentro la funzione dove c'è :
Utility::copyRecursive($sorgente, $destinazione);
sostituisci con
copyRecursive($source, $dest);
ciao
ho trasformato così è giusto?
<?php
function copyRecursive($source, $dest) {
$source = str_replace('\\', '/', $source);
$dest = str_replace('\\', '/', $dest);
$dir = basename($source);
mkdir($dest);
$contenuto_dir = glob($source."*");
foreach($contenuto_dir as $val) {
$val = str_replace('\\', '/', $val);
if(is_dir($val)) {
$sorgente = $val.'/';
$destinazione = $dest.basename($val).'/';
copyRecursive($source, $dest);
} else {
copy($val, $dest.basename($val));
}
}
}
$source = "/dir1/";
$dest = "/dir2/";
copyRecursive($source, $dest);
?>
perchè non mi funziona!![]()
![]()
![]()
![]()
![]()
a me funziona, l'unico motivo per cui non dovrebbe funzionare è che non solo non esiste la dir di destinazione, ma neanche quella che dovrà contenerla.Originariamente inviato da supermix
ho trasformato così è giusto?
<?php
function copyRecursive($source, $dest) {
$source = str_replace('\\', '/', $source);
$dest = str_replace('\\', '/', $dest);
$dir = basename($source);
mkdir($dest);
$contenuto_dir = glob($source."*");
foreach($contenuto_dir as $val) {
$val = str_replace('\\', '/', $val);
if(is_dir($val)) {
$sorgente = $val.'/';
$destinazione = $dest.basename($val).'/';
copyRecursive($source, $dest);
} else {
copy($val, $dest.basename($val));
}
}
}
$source = "/dir1/";
$dest = "/dir2/";
copyRecursive($source, $dest);
?>
perchè non mi funziona!![]()
![]()
![]()
![]()
![]()
Cioè se io copio da
c:/test/prova/
a
c:/test2/prova
e non esiste test2 allora da errore.
Come ti ho detto è una cosa rudimentale che mi sono scritto al volo, se non va, prova a mettere qualche echo quà e la che ti stampi un po' di informazioni, cosi vedi gli errori.
Metti anche queste 2 linee in cima al file, cosi avrai anche un po' di debug da parte del motore php.
error_reporting(E_ALL); // report all errors
ini_set("display_errors", 1);
ciao