function rec_copy ( $source_path, $destination_path, $con )
{
ftp_mkdir( $con, $destination_path );
ftp_site( $con, 'CHMOD 0777 '.$destination_path );
ftp_chdir( $con,$destination_path );
if ( is_dir( $source_path ) )
{
chdir( $source_path );
$handle=opendir( '.' );
while ( ( $file = readdir( $handle ) )!==false )
{
if ( ( $file != "." ) && ( $file != ".." ) )
{
if ( is_dir( $file ) )
{
// here i am restricting the folder name 'propertyimages' from being copied to remote server.
if( $file != "propertyimages" )
{
rec_copy ( $source_path."/".$file, $file, $con );
chdir( $source_path );
ftp_cdup( $con );
}
}
if ( is_file( $file ) )
{
$fp = fopen( $file,"r" );
// this will convert spaces to '_' so that it will not throw error.
ftp_fput ( $con, str_replace( " ", "_", $file ), $fp,FTP_BINARY );
ftp_site( $con, 'CHMOD 0755 '.str_replace( " ", "_", $file ) );
}
}
}
closedir( $handle );
}
}
?>
Example.php:
<?php
// make a FTP connection
$con = ftp_connect( "69.18.213.131",21 );
$login_result = ftp_login( $con,"username","password" );
// this is the root path for the remote server
$rootpath = "mainwebsite_html";
// this is the physical path of the source directory. actually u can also use the relative path.
$sourcepath = realpath( "../" )."/resdesk";
// this directory name will only change the top most directory and not the inner one
$destination_dir_name = "resdesk_".$account_id."/";
rec_copy ( $sourcepath, $destination_dir_name, $con );
if ( function_exists( "ftp_close" ) )
{
ftp_close( $con );
}
?>