PHP: spostare le directory con i contenuti?
Domanda
Ho un $bundle
matrice che memorizza i nomi dei file e delle directory.
Sono in esecuzione attraverso l'array con un ciclo foreach e voglio spostare al loro interno di un altro elenco. Sto usando il metodo di ridenominazione, dunque, e funziona abbastanza bene con solo file.
Tuttavia directory con altri file in là non rispondono al metodo rename()
.
$folder = 'files';
foreach ($bundle as $value) {
$ext = pathinfo($value, PATHINFO_EXTENSION);
if ($ext != "") { //if $value has no suffix it's a fil
rename(PATH . '/' .$value, $folder . '/' . $value);
}
if ($ext == "") { // it's a folder/directory
//rename doesn't work for directories with contents
//what method should i use here???
}
}
So che il metodo pathinfo()
non è il modo migliore per scoprire se si tratta di una directory o no, comunque per il mio piccolo progetto va bene. Ho solo bisogno di sapere come posso spostare qualsiasi cartella con tutti i suoi contenuti nella cartella "file".
Grazie per il vostro aiuto.
Soluzione
Si dovrà ottenere tutti i nomi dei file in quella cartella utilizzando glob
o scandir
. Poi si dovrebbe ciclo attraverso di loro con la ridenominazione e spostarli.
L'altra opzione, se si ospita lo permette, è quello di utilizzare shell_exec
e fare il mv
per Linux o copy
/ xcopy
per comando di Windows e spostare in quel modo. Se si sceglie il percorso exec, assicurarsi di garantire l'ingresso, ecc per evitare cose cattive accada.