A veces es imposible borrar una carpeta o unos archivos del servidor, sobre todo si hemos borrado una instalación de Drupal o Joomla. Para conseguirlo debemos ejecutar este script de php:

<?php
function rchmod($parent, $dmod, $fmod) {
if (
is_dir($parent)) {
$old = umask(0000);
chmod($parent, $dmod);
umask($old);
if (
$handle = opendir($parent)) {
while ((
$file = readdir($handle)) !== false) {
if (
$file === "." or $file === "..") {
continue;
} elseif (
is_dir($parent . '/' . $file)) {
rchmod($parent . '/' . $file, $dmod, $fmod);
} else {
$old = umask(0000);
chmod($parent . '/' . $file, $fmod);
umask($old);
}
}
closedir($handle);
}
} else {
$old = umask(0000);
chmod($parent, $fmod);
umask($old);
}
}
rchmod('foldername/', 0777, 0666);
?>

Donde pone folder name escribimos la carpeta que queremos borrar. Al ejecutarlo le dará unos permisos 0777, que extrañamente si dejarán ahora borrar la carpeta desde filezilla o filemanager.

victor

Hola!. Me llamo Víctor Reyes y soy Ingeniero Agrónomo de formación y programador web de profesión (desde el año 2006). Por otra parte me gusta, entre otras aficiones, el senderismo, jugar al futbol y al FIFA en la PS3. Te animo a participar en mi web www.biolucas.com

This Post Has 31 Comments

  1. Alcy

    Muy buen aporte, me salvo de todo un día matándome pensando el por qué no se borran los archivos a pesar que modificaba sus permisos. Gracias!!!

    1. victor
      victor

      Genial Alcy ;D. Me alegro que te haya servido.

      Un saludo, Víctor

  2. Naya

    Hola Victor te agradecería tanto me ayudaras!!!! No puedo borrar los archivos incluso con el archivo.php que nos entregas. Se trata de que hackearon mi web, el archivo me indica que “No está permitido” cambiarle los permisos 🙁 ayudame por favoooor!!!!!

    1. victor
      victor

      Hola Naya, perdona el retraso en contestarte y feliz año 2015!. El otro día me paso algo similar, el problema en mi caso es que la sesión en cpanel no funcionaba bien, ya que cargaba el archivo y lo ejecutaba y no lo reconocía. La solución fue salir de la sesión y volver a entrar con mi usuario y funcionó sin problemas. Saludos!

  3. ivan

    y como se pega el codigo? donde se pega el codigo? como se tiene que hacer para eliminar eso? desde donde? Gracias

    1. victor
      victor

      Hola Ivan, tiene que crear un archivo php con el código que pongo, por ejemplo llámalo 1.php. Lo subes a la raíz del servidor donde tienes la instalación, por ejemplo la raíz de la instalación en drupal. Después si tu web esta en http://web.com/drupal para ejecutar el archivo escribes su dirección en la barra de direcciones, por ejemplo si es 1.php el archivo tendrías que escribir: http://web.com/drupal/1.php y das al enter o a ir a esa dirección.
      Con el archivo ejecutado si vamos a los archivos que no se pueden borrar, les damos todos los permisos y esta vez al borrarlos funciona y los eliminamos del servidor. Si tienes cualquier duda contáctame por el contacto de la web y te respondo por mail personal.

      Un saludo, Víctor

  4. Jose Perea

    Va de lujo,

    Muchas gracias !!!

    1. victor
      victor

      Muchas gracias José por participar.
      Un saludo, Víctor

  5. Ricardo Rivera

    Muchas gracias era justo lo que necesitaba y soluciono mi problema como lo quería …

    Gracias ….

    1. victor
      victor

      Gracias a ti Ricardo por participar en el foro, me alegro que te haya servido de ayuda.

      Un saludo, Víctor

  6. Luis Albornoz

    buenas Victor, me llamo luis, te escribo, porque quisiera saber si me puedes aconsejar como borrar unos archivos persistentes en mi host, actualmente intente borrarlos mediante el fillezilla y el ftp core y no me permite eliminarlos, incluso cuando intento ingresos mediante cmd, pero apenas ingreso el msdos me comunica que estoy ocupando el 0% de el espacio total de almacenamiento host…, mi pregunta seria, tengo maneras de borrarlos? o tendría que por obligación contactar al proveedor de los servicios?.

    nota: los archivos poseen permisos 0777 … que puedo hacer en este caso amigo, uso windows.

    Gracias de antemano.

    1. victor
      victor

      Hola Luis, gracias por participar en el blog. Si esos archivos están en una carpeta (y es una carpeta que puedas borrar) puedes seguir el método que te conté. Pero al decir que usas windows te refieres a que tu hosting no es linux si no es un windows?. De todas formas yo antes de utilizar este método que pongo en la web les pedía a los encargados del soporte del hosting que me borraran esos archivos y lo hacían sin problema (había que ser un poco pesado explicándoles que era imposible borrar esos archivos), pero me pasaba tantas veces que decidí investigar un método para no estar escribiéndoles cada vez que hacía pruebas con drupal u otros gestores de contenidos en php.

      No se si con esto te he ayudado o sigues igual, si es así comentalo con más detalle que entre todos te podremos ayudar.

      Un saludo, Víctor

  7. Claudio Mateluna

    Muchas gracias Victor me ayudaste un montón con la explicación.

    1. victor
      victor

      Hola Claudio, gracias a ti, me alegra que te haya servido el artículo.

      Saludos!

  8. Esteban

    Victor,
    Ya he creado varias bases de datos en phpmyadmin (de Mamp) con distintos nombres, cada vez que lanzo el instalador de drupal al completar los datos con el nombre de la nueva base de datos, el Database username “root” y el Database password “root” al darle en save and continue se queda colgado con la pagina en blanco y automaticamente en phpmyadmin de Mamp esa nueva base de datos esta llena de los mismos archivos que las anteriores que habia creado. No se si me explico bien?
    Un Saludo!!

    1. victor
      victor

      Hola Esteban, no se si te servirá pero en local en windows la contraseña de “root” está en blanco, es decir, no pongo nada. De todas formas no creo que sea esta la solución al problema de SQLSTATE(28000) (10045). Yo probaría lo siguiente:
      1. Instalo Drupal con una nueva base de datos poniendo usuario “root” y contraseña vacia. Probablemente no te solucione nada
      2. Aquí haría algo rudimentario que a veces funciona: borraría Mamp desde el desinstalador y lo volvería a instalar y probaría otra vez instalarlo.

      Si ves que no te funciona puedes enviarme un email a victor@biolucas.com y veo como poder solucionarlo. Perdona que por ahora no entre en profundidad pero a veces la solución se puede obtener rápidamente, ojala sea una de estas veces.

      Un saludo, Víctor

  9. Esteban

    Hola Victor,
    Gracias por tu pronta respuesta, es bueno saber que puedo tener varias instalaciones de drupal, no lo sabia.
    De todas formas asi como me lo explicas es como lo instale en un principio, pero desde que lo elimine ya no me deja volver a instalarlo…
    Me tira un mensaje super largo en ingles que le hice una captura de pantalla pero veo no te lo puedo subir por aqui… en resumen pone SQLSTATE(28000) (10045) Acces denied for user root@localhost (using password: NO)
    Lo que quiero es poder instalar el 7.25 y lo hago como lo ya lo he hecho antes y nada….
    Espero haberme podido explicar bien y me puedas ayudar.
    Gracias nuevamente!!!

  10. Esteban

    Hola Victor,
    He visto que has ayudado a varias personas y espero me puedas echar un cable a mi tambien.
    Estoy con el mismo tema, tengo mac, uso Mamp e instale Drupal, el tema es que como soy aficionado y solo investigaba de que iba el tema luego lo borre, ahora quiero instalar una version mas nueva de Drupal y no puedo. Al crear la carpeta Drupal en phpmyadmin en lugar de estar vacia enseguida aparecen un monton de cosas (del drupal antiguo supongo) y no puedo encontrar root, ya he leido que: El root es la raiz de la instalación Drupal, es donde tienes las carpetas /images /includes /sites etc y los archivos index.php,info.php, etc pero tampoco doy con ello.
    Me podras ayudar?
    Desde ya mil gracias!!!

    1. victor
      victor

      Hola Esteban, gracias por participar en el blog. Aunque no tengo Mac estoy seguro que funcionará igual que con Windows. Yo tengo tanto Wamp como Xampp. En local (y en el servidor) puedes tener tantas instalaciones de drupal, joomla, html wordpress como quieras por lo que el problema no debería estar ahí, te voy a contar como lo hago en Wamp y Xampp (estoy casi seguro que Mamp será igual que Wamp) para tener una nueva instalación (no se si tu duda es en concreto esto, espero no confundir el motivo de tu consulta y contarte otro tema):

      1. Me descargo la última versión de Drupal (actualmente 7.25), la descomprimo y te queda una carpeta X con los directorios includes, misc, modules, profiles, etc
      2. Esa carpeta X la pones si es Wamp en: C:\wamp\www y si es Xampp en: C:\xampp\htdocs
      3. Vas a localhost/phpmyadmin y creas una base de datos. La puedes llamar, por ejemplo, drupalx
      4. Ahora vas por el navegador a la instalación de drupal X, escribes: localhost/X
      5. Te aparecerá la pantalla de instalación de Drupal 7, al ser en local tienes que poner el nombre de la base de datos “drupalx” y generalmente usuario “root” y contraseña vacia
      6. Sigues los pasos y deberías instalar correctamente Drupal 7

      Con esto te debería funcionar. Si ves que te atascas en algún paso coméntamelo y lo explico en detalle o hago un videotutorial para que lo veas. Si tienes más dudas referente a este tema o a otros no dudes en consultarme. Espero haberte ayudado.
      Un saludo, Víctor

  11. mahatmatxiki

    Gracias estaba desesperado

    1. victor
      victor

      Gracias a ti.
      Saludos, Víctor

  12. sugarmoren

    Funciona muy bien con las carpetas que no me dejaba borrar de la instalcion de joomla, muchísimas gracias

  13. Ruben D. Gutiérrez

    Hola Victor solo paso a saludarte y agradecerte ya que gracias a este artículo solucione un problema que tenía pero con wordpress. Un abrazo y mucho éxito

  14. Narciso

    Muchas gracias Victor, creo haber entendido bien lo que tan amable y pacientemente me has explicado, pero no me ha funcionado.

    He subido de local a remoto, haciendo los siguientes pasos:
    * Exportar la base de datos de local con phpMyadmin a un fichero.
    * Borrar el contenido de la base de datos del servidor con el phpMyadmin del servidor.
    * Importar la base de datos de local al servidor con el phpMyadmin del servidor.
    * Subir y reescribir todos los archivos y carpetas de Drupal al raiz del servidor. Al hacerlo he tenido una incidencia; no se han reescrito el archivo .htaccess de sites/default/files. He borrado el que existia y lo he vuelto a subir.

    Al poner la URL de mi sitio, sale la pagina principal, incluso funciona un video que tiene. Pero no funciona nada mas, tanto si clico en “leer mas” de los nodos de esa pagina o si pulso alguna de las pestañas, sale una pagina en blanco con un error:

    ” Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webadmin@kundenserver.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.”

    Si intento iniciar sesión sale el mismo error.

    ¿Se te ocurre que he hecho mal? o ¿puedes indicarme la forma correcta de subir el local a remoto?

    Muchas gracias y perdona tanta molestia.

  15. Narciso

    GRACIAS, GRACIAS y GRACIAS.
    Me ha funcionado perfectamente.
    Borrados estos archivos y copiado de nuevo default.settings.php se ha abierto el instalador.

    No solo me has resuelto el problema, sino que he aprendido varias cosas mas.

    Ahora voy a instalar de nuevo Drupal y a ver como subo los archivos de local. Creo que tengo que copiar todo excepto el archivo settings.php
    A ver si esta vez no me lo cargo.

    Muchas gracias

    1. victor
      victor

      Me alegro mucho Narciso.

      Creo que quieres instalar drupal desde cero en servidor que es como me comentabas. Si haces un sitio en local y lo quieres pasar al servidor yo lo hago de una forma que no se si te servirá.
      1. Copio todos los archivos de drupal en local
      2. Copio la base de datos donde se instaló Drupal por phpmyadmin en local (exportar base de datos).
      3. En el servidor copio los archivos de la instalación de drupal de local
      4. Creo una base de datos en el servidor
      5. Importo la base de datos que exportamos en local, para que tenga los mismos datos
      6. Modifico en settings.php del servidor para que ahora apunte a nuestra base de datos.

      Con eso siempre me funciona.

      Un saludo, Víctor

  16. victor
    victor

    Hola Narciso, muchas gracias por contactar conmigo. Voy a tratar de ayudarte pero si no te lo explico con claridad o no te sirve preguntame otra vez y todas las veces que sean necesarias.
    1. El root es la raiz de la instalación Drupal, es donde tienes las carpetas /images /includes /sites etc y los archivos index.php, info.php, etc
    2. Este archivo que comento aquí lo tienes que situar aquí, por ejemplo, si se llama 10.php, aparecería en el root, es decir, tendrías entre los archivos index.php, info.php, 10.php etc
    3. Ese archivo 10.php tiene que tener el codigo de arriba cambiando la penúltima línea:
    rchmod(‘foldername/’, 0777, 0666); por
    rchmod(‘sites/’, 0777, 0666);
    (en el caso de Drupal)
    4. Una vez subido este archivo al root de tu instalación y suponiendo que se llama 10.php y suponiendo que tu sitio tiene la url: http://webnarciso.com tiene que poner lo siguiente en la barra de direcciones del navegador:
    http://webnarciso.com/10.php
    y das al enter o ir a ese sitio, verás que la pantalla sigue blanca del navegador o se pone blanca, pero en realidad se ha ejecutado el código.
    5. Ahoras vas con un cliente de ftp como filezilla al root de Drupal (lo que queda que no ha borrado), botón derecho en la carpeta /sites, pondrá algo como permisos, y pones 777, es decir, das todos los permisos para la carpeta y los archivos que la contienen
    6. Ahora ya puedes borrar uno por uno o en grupo. Al recargar el visor de ftp veras que si se han borrado de verdad.
    Intenta esto Narciso, una vez que lo consigas te explico con instalar Drupal de local al servidor.
    Un saludo, Víctor

    1. Narciso

      Muchisimas gracias Victor, eres muy amable.
      Voy a probarlo y te cuento como me ha ido.
      Gracias otra vez por la molestia.

  17. Narciso

    Hola Víctor, he encontrado tu pagina y te molesto para ver si me puedes ayudar.
    He instalado Drupal por primera vez en mi servidor y la instalacion fue correcta. Cuando quise migrar los archivos que tenia en local, algo hice mal y me lo cargué. Para arreglarlo se me ocurrió borrar todos los archivos y volver a instalar Drupal, pero no puedo borrar ni default.settings.php, ni settings.php, ni la carpeta Files.
    En primer lugar, no estoy seguro de si borrando estos archivos y carpetas, y copiando de nuevo los archivos de instalación se abrirá el instalador de Drupal, o me voy a encontrar con otro problema.
    Por otro lado, no tengo ni idea de que es el root, ni que hay que hacer para que se ejecute el script que detallas. ¿ podrías, si eres tan amable, explicarme como si no supiera nada de informática como hacerlo?
    Muchas gracias por adelantado.
    Acabo de empezar a trastear con Drupal y no tengo ni idea de php, ni de ningun otro lenguage, pero aprendo rapido. Me pregunto si podria molestarte otra vez con alguna duda.
    Muchas gracias.

  18. kely

    como ejecuto el script ???? 😀

    1. victor
      victor

      Hola Kely, muchas gracias por colaborar, lo que comentas se me paso al hacer el artículo.

      Sabemos que en el root de Drupal tenemos una serie de archivos y de carpetas, entre ellas /sites que por más que intentemos borrarla a mano no podemos, aunque demos todos los permisos 777 no nos deja borrarla.

      Para hacerlo primero ponemos el script que llamamos por ejemplo 1.php en el root cambiando la línea:
      rchmod(‘foldername/’, 0777, 0666);
      por esta otra, ya que queremos borrar la carpeta /sites:
      rchmod(‘sites/’, 0777, 0666);

      Ahora para ejecutarlo, si nuestro sitio se llama nuestrositio.com, tenemos que escribir en la barra de direcciones: nuestrositio.com/1.php y pulsamos enter. No se verá nada pero ya se ha ejecutado el script. Al poner ahora la carpeta sites con permisos 777 e intentarla borrar nos dejará.

      Espero que te funcione.

      Un saludo, Víctor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*

CommentLuv badge