Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/03/2006, 07:08
MiquelCS
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 3 meses
Puntos: 0
Yo utilizo la siguiente función recursiva para eliminar un directorio mediante conexión ftp. Sin embargo, no consigo que funcione:

Código:

	function EliminarDirectorioFTP( $conn_id, $dst_dir )
	{
		$lista = ftp_rawlist( $conn_id, $dst_dir );
		
		$i = 0;
		$split = array();
		$parsed = array();
		foreach( $lista as $current )
		{
			$split = preg_split("[ ]", $current, 9, PREG_SPLIT_NO_EMPTY);
			if( $split[0] != "total" )
			{
				$parsed[ $i ][ 'isdir' ]     = $split[0]{0} === "d";
				$parsed[ $i ][ 'perms' ]     = $split[0];
				$parsed[ $i ][ 'number' ]    = $split[1];
				$parsed[ $i ][ 'owner' ]     = $split[2];
				$parsed[ $i ][ 'group' ]     = $split[3];
				$parsed[ $i ][ 'size' ]      = $split[4];
				$parsed[ $i ][ 'month' ]     = $split[5];
				$parsed[ $i ][ 'day' ]       = $split[6];
				$parsed[ $i ][ 'time/year' ] = $split[7];
				$parsed[ $i ][ 'name' ]      = $split[8];
				
				$i ++;
			}
		}
		
		foreach( $parsed as $parsed_id => $parsed_valor )
		{
			if( $parsed_valor[ 'isdir' ] && $parsed_valor[ 'name' ] <> "." && $parsed_valor[ 'name' ] <> ".." )
				EliminarDirectorioFTP( $conn_id,  $dst_dir . '/' . $parsed_valor[ 'name' ] );
			else
				@ftp_delete( $conn_id, $dst_dir . '/' . $parsed_valor[ 'name' ] );
		}
		
		@ftp_rmdir( $conn_id, $dst_dir );
	}
Los archivos los elimina correctamente, pero las carpetas no las puede eliminar ya que las detecta como si estuviesen llenas, menos la última. La última carpeta en la gerarquía la elimina, para las demás devuelve un mensaje tipo "El directorio no está vacio". El directorio inmediatamente superior lo detecta como lleno, lo cual me parece incongruente. Es como si no le diera tiempo a refrescar y ver que he eliminado la carpeta que contenía.

No sé si me he explicado bien. Si alguien tiene tiempo, por favor, que pruebe el código y me diga si le ha funcionado o si le pasa lo mismo que a mí. Gracias
__________________
.