Copiar directorio recursivo con PHP desde FTP
Pues eso, lo dejo por aquí para empezar a utilizar:
//Recojo el valor de donde copio y donde tengo que copiar
function copia($dirOrigen, $dirDestino, $connId)
{
//Creo el directorio destino
ftp_mkdir($connId, $dirDestino);
//abro el directorio origen
if ($vcarga = opendir($dirOrigen))
{
while($file = readdir($vcarga)) //lo recorro enterito
{
if ($file != "." && $file != "..") //quito el raiz y el padre
{
if (!is_dir($dirOrigen.$file)) //pregunto si no es directorio
{
$localFilePath = $dirOrigen.$file;
$remoteFilePath = $dirDestino.$file;
// try to upload file
if(ftp_put($connId, $remoteFilePath, $localFilePath, FTP_ASCII)){
echo "File transfer successful - $localFilePath<br>";
}else{
echo "Error subiendo $localFilePath al FTP $remoteFilePath<br>";
}
}else{
echo " — directorio — <br />"; //era directorio llamo a la función de nuevo con la nueva ubicación
copia($dirOrigen.$file."/", $dirDestino.$file."/", $connId);
}
echo "<br />";
}
}
closedir($vcarga);
}
}
$destino= './web/'.$webURL.'/public_html/';
$origen = "./nicho/";
copia($origen, $destino, $connId)
A tener en cuenta que $connId es el puntero a la conexión, os dejo también aquí la llamada para tenerlo completo, esta conexión se ha de realizar antes de llamar a la función como podrás suponer, ya que en la llamada a la función para copiar, ya se hace mención a la variable 😉
// FTP server details
$ftpHost = 'vertutoriales.com';
$ftpUsername = 'admin';
$ftpPassword = 'ftppass';
// open an FTP connection
$connId = ftp_connect($ftpHost) or die("No pudo conectarse al server: $ftpHost");
// try to login
if(@ftp_login($connId, $ftpUsername, $ftpPassword)){
echo "Conectado as $ftpUsername@$ftpHost";
}else{
echo "No pudo conectarse por FTP, revisa el usuario: $ftpUsername y el resto de parámetros";
}
Como me alegro de documentarme estas cosas. Gracias mi yo del pasado 😀