<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>emmgfx &#187; Recursividad</title>
	<atom:link href="http://www.emm-gfx.net/etiqueta/recursividad/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emm-gfx.net</link>
	<description>Y ahora sin más; construye y destruye.</description>
	<lastBuildDate>Sun, 22 Jan 2012 11:24:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>RMDIR recursivo en PHP</title>
		<link>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/</link>
		<comments>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:35:32 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[Recursividad]]></category>
		<category><![CDATA[rmdir]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=802</guid>
		<description><![CDATA[Para eliminar directorios con php se utiliza la función rmdir(), el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos. Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el manual de rmdir en php.net se pueden ver [...]]]></description>
			<content:encoded><![CDATA[<p>Para eliminar directorios con php se utiliza la función <code>rmdir()</code>, el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos.</p>
<p>Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el <a href="http://es2.php.net/rmdir">manual de rmdir en php.net</a> se pueden ver algunas en los comentarios, pero no es eso lo que me interesa. Lo que voy a explicar es cómo hacerlo utilizando comandos del sistema (en unix, los de windows no tengo ni idea).<span id="more-802"></span></p>
<p>La cosa es sencilla, para ejecutar comandos del sistema se utiliza la función <code>exec()</code> de PHP.</p>
<p>Por ejemplo:</p>
<pre>echo '&lt;ol&gt;';
if(exec('rm -frv /el/directorio/a/borrar/',$salida)){
   foreach($salida as $line){
      echo '&lt;li&gt;'.$line.'&lt;/li&gt;';
   }
}else{
   echo '&lt;li&gt;Error al eliminar archivos&lt;/li&gt;';
}
echo '&lt;/ol&gt;';</pre>
<p>Como se ve, he utilizado el comando rm con las opciones <code>-frv</code>, la <code>f</code> es para forzar (ignora archivos inexistentes), la <code>r</code> para que sea recursivo y la <code>v</code> (de verbose) para que explique lo que esta haciendo. Si queréis, en la wikipedia hay <a href="http://en.wikipedia.org/wiki/Rm_%28Unix%29">mas información</a> sobre el comando <code>rm</code>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursividad en mkdir de PHP</title>
		<link>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/</link>
		<comments>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:09:11 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[Recursividad]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=255</guid>
		<description><![CDATA[No en todas las versiones de PHP se puede hacer un mkdir recursivo directamente, mkdir('/1/2/3/'); aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una [...]]]></description>
			<content:encoded><![CDATA[<p>No en todas las versiones de PHP se puede hacer un <strong>mkdir recursivo</strong> directamente, <code>mkdir('/1/2/3/');</code> aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una función propia que haga el mkdir recursivo. En el manual oficial de php se explica a fondo como utilizar correctamente la función oficial, con los permisos y recursividad que se necesiten.</p>
<p>Como por ejemplo:</p>
<pre lang="php" line="1">
function mkdir_recursivo($pathname, $mode){
	umask(0);
	is_dir(dirname($pathname)) || mkdir_recursive(dirname($pathname), $mode);
	return is_dir($pathname) || mkdir($pathname, $mode);
}</pre>
<p>Un ejemplo de uso de esta función sería:</p>
<pre lang="php" line="1">
$ruta = 'carpeta/subcarpeta/subsubcarpeta/';
mkdir_recursivo($ruta,0777);
</pre>
<p>Donde <code>0777</code> hay que poner los permisos que se quieran (con el 0 delante).</p>
<p>En cualquier caso, recomiendo leer el manual oficial y visitar estos enlaces para entender y poder escoger la opción que convenga.</p>
<ul>
<li><a href="http://es2.php.net/mkdir">Manual oficial de PHP: mkdir</a></li>
<li><a href="http://www.mombu.com/php/php/t-33140-recursive-mkdir-doesnt-work-when-path-includes-a-non-existent-root-folder-1010858.html">Mkdir recursivo no funciona cuando el path incluye una carpeta raíz inexistente.</a></li>
</ul>
<p>Suerte.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

