Foros del Web » Programando para Internet » PHP »

Error al eliminar

Estas en el tema de Error al eliminar en el foro de PHP en Foros del Web. Hola a todos, Estoy intentado eliminar una carpeta desde PHP, el problema es que me tira dos errores muy diferentes segun como ponga el path ...
  #1 (permalink)  
Antiguo 14/11/2008, 15:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Error al eliminar

Hola a todos,

Estoy intentado eliminar una carpeta desde PHP, el problema es que me tira dos errores muy diferentes segun como ponga el path

Código PHP:
<?
rmdir
(dirname("lucas Segura"));

?>
Ahi me tira el siguiente error

Código HTML:
Warning: rmdir(.) [function.rmdir]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 13
Yo la carpeta la creo desde codigo php con la funcion mkdir, no se por que me dice que no tengo permisos.

En cambio cuando le pongo

Código PHP:

    rmdir
(dirname("../lucas Segura")); 
Me dice

Código HTML:
Warning: rmdir(..) [function.rmdir]: Directory not empty in C:\AppServ\www\escuela\reditarcat.php on line 13
El directorio si esta vacio no se porque me tira ese error

Me gustaria saber cual es mi error gracias
  #2 (permalink)  
Antiguo 15/11/2008, 00:22
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Error al eliminar

Si creas los archivos con php, yo sugiero que cuando creas el archivo establescas sus permisos:

Código PHP:
//Creando un directorio, con permisos de lectura, escritura y ejecucion para todos los grupos de usuarios
mkdir("midirectorio"0777); 
Te recuerdo que la funcion rmdir() solo elimina directorios vacios, y hay ocaciones en que los servidores web crean archivos temporales dentro de nuestros directorios. Para eliminar el directorio completo, primero asgeurate de que esté vacío.
  #3 (permalink)  
Antiguo 16/11/2008, 08:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Hola,

Ahora puse en 0777 los permisos cuando creo una carpeta pero me sigue tirando los mismo errores, hay alguna manera de eliminar los archibos temporales¿? Igual no me aparece nada en la carpeta, ningun archibo


Disculpen algo mas, encontre esta funcion
Código PHP:
$path 'path/to/my/dir';
if (
file_exists(dirname($path))) {
    foreach (new 
DirectoryIterator(dirname($path)) as $file) {
        if (
true === $file->isFile()) {
            
unlink($file->getPathName());
        }
    }
    
rmdir(dirname($path));

Cita:

El problema es que me tira los siguientes errores

Warning: unlink(\PAGEFILE.SYS) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\Bootfont.bin) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\ntldr) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\NTDETECT.COM) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\IO.SYS) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\MSDOS.SYS) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: unlink(\hiberfil.sys) [function.unlink]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 17

Warning: rmdir(\) [function.rmdir]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 20
Alguna idea del porque de los errores

Última edición por luks77; 16/11/2008 a las 08:50 Razón: Encontre algo nuevo
  #4 (permalink)  
Antiguo 16/11/2008, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al eliminar

te has dado cuenta que son archivos de sistema los que estas intentando borrar?

solo debes poder tener acceso para borrar los archivos de la carpeta publica de tu web, no en todas partes!! (es una falta de seguridad)

demás.... $path de verdad existe?

espero comprendas, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/11/2008, 10:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Yo desde php cree una carpeta con los permisos 0777 por medio de codigo.

Ahora lo que yo quiero es eliminar esa carpeta que cree. Pero me dice que no tengo permisos, como es el tema.

Como hago para crear una carpeta para despues eliminarla???

Si yo pongo

Código PHP:
//Creando un directorio, con permisos de lectura, escritura y ejecucion para todos los grupos de usuarios
mkdir("midirectorio"0777);  

$path '/midirectorior';
if (
file_exists(dirname($path))) {
    foreach (new 
DirectoryIterator(dirname($path)) as $file) {
        if (
true === $file->isFile()) {
            
unlink($file->getPathName());
        }
    }
    
rmdir(dirname($path));

Donde esta el error q no me deja eliminar la carpeta que recien cree???
  #6 (permalink)  
Antiguo 16/11/2008, 10:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al eliminar

mmm.....

midirectorio no es igual a /midirectorior

igual, es un error de tipeo... pero la barra inicial es un problema...

Código PHP:
$path 'foo';

mkdir($path0777);
rmdir($path); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 16/11/2008, 10:54
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Ok... Ya soluciones un problema, ahora me falta otro

So yo cree la carpeta con permisos 0777. Ahora cuando la quiero eliminar igual me tira este error

Código HTML:
Warning: rmdir(.) [function.rmdir]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 20
Si alguien me puede decir alguna razon


Quiero decir algo puse el PATH sin la barra y me elimino todos los archibos de la carpeta, es decir no me elimino los archibos de midirectorior sino de la carpeta principal !!!!!!!!! decir que tenia una por si las dudas

$path = 'midirectorior';
if (file_exists(dirname($path))) {
foreach (new DirectoryIterator(dirname($path)) as $file) {
if (true === $file->isFile()) {
unlink($file->getPathName());
}
}
rmdir(dirname($path));
}

¿Por que paso esto?

Última edición por luks77; 16/11/2008 a las 11:04
  #8 (permalink)  
Antiguo 16/11/2008, 11:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al eliminar

mira... ojo con lo que haces

estas usando dirname cuando esa parte no debe estar así... vaya, sabes lo que hace?

(si se trata de borrar un directorio, y usas dirname te da el error)

osea, estas recorriendo la carpeta en un nivel... lo cual no debe ser

prueba esto...

Código PHP:
$dir 'foo/';
mkdir($dir0777);

$r=opendir($dir);
while ((
$o=readdir($r)) !== false)
{
  if (
substr($o01) !== '.')
  {
    if (
is_file($r.$o))
    {
      
unlink($r.$o);
    }
  }
}

rmdir($dir); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 16/11/2008, 11:18
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 18 años
Puntos: 4
Respuesta: Error al eliminar

El caso de este error es que segun he aberiguado es que para que esas funciones eliminen un directorio este debe estar vacio, pero que pasa mucha veces vaciamos el directorio de forma manual y nos seguira tirando este error, pues aunque no lo creemos el sistema tiene en dicho directorio 2 carpetas mas (.) y (..) por eso te seguira tirando ese error.

Warning: rmdir(..) [function.rmdir]: Directory not empty in C:\AppServ\www\escuela\reditarcat.php on line 13

Recuerda darle permisos 0777 a todos los directorios ya sean (.) y (..)Y eliminarlos desde php, por que desde ftp lo mas probables que no se pueda.


Busca mas info en www.php.net
http://www.php.net/rmdir
  #10 (permalink)  
Antiguo 16/11/2008, 13:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Copie la funcion que me dijiste y me sigue tirando el mismo error

Código HTML:
Warning: rmdir(micarpeta/) [function.rmdir]: Permission denied in C:\AppServ\www\escuela\reditarcat.php on line 59
  #11 (permalink)  
Antiguo 16/11/2008, 16:56
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 18 años
Puntos: 4
Respuesta: Error al eliminar

La verdad esa forma de trabajo hace sufrir mucho yo trabaje un tiempo pero al igual que tu tuve problemas, pero lo soluciones creandlo las carpetas de manera subjetiva en MySQL, asi cuando eliminaba la fila que llevaba el nombre de la carpeta se eliminaban todos los archivos con identidicador igual al de la fila asi no tenia problemas.

Esperemos que algun experto pueda resoslver este problema ;)
  #12 (permalink)  
Antiguo 18/11/2008, 10:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Hola a todos,

Despues de buscar mucho tiempo mas, encontre una funcion que me sigue sin dar resultado, pero por lo menos me cambia el tipo de error.

Fijensen

Código PHP:
$path="robert";
mkdir($path,0777);
if (
$handle opendir($path))
{
    for (;
false !== ($file readdir($handle));)
    {
        if(
$file != "." && $file != "..")
        {
            if(
unlink($path.$file)) $info.="file ".$file." delete sussfully<BR>";
            else 
$info.="Unable to delete file ".$file."<BR>";
        }
    }
    
closedir($handle);
    if(!
rmdir($section)) $info.="<BR>Could not delete directory ".$path;
    else 
$info.='<BR>'.$path.' deleted';
}
else 
$info.="problrm deleting directory";


Ahora me tira un error muy raro

Código HTML:
Warning: rmdir() [function.rmdir]: No error in C:\AppServ\www\escuela\reditarcat.php on line 56
  #13 (permalink)  
Antiguo 18/11/2008, 11:16
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Error al eliminar

como que cambiale esto no???
for ($file = readdir($handle)){

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #14 (permalink)  
Antiguo 18/11/2008, 11:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al eliminar

masterojitos, esa parte del for esta correcta... bueno, es valida

recuerda que los ciclos, pueden ser lógicos y no "numerados" necesariamente...

experimenta..
Código PHP:
$n=0;

for (;;)
{
  if (++
$n >= 10) break;
  echo 
"$n<br />";
}

while (
true)
{
  if (--
$n <= 0) break;
  echo 
"$n<br />";
}

echo 
$n
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 18/11/2008, 13:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error al eliminar

Sino, no me pueden dar una funcion que si sirva para eliminar carpetas. Ya probe con todo y todo me da error.

Por favis, alguien me puede dar una funcion que si sirva, o alguna razon porque todo me tira error,

muchas gracias.
  #16 (permalink)  
Antiguo 18/11/2008, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al eliminar

mmm....

mira, si así te funciona...

Código PHP:
$d=uniqid('');
mkdir($d0777);
rmdir($d); 
si eso te da error aún, quiere decir que hay algo mas allá de una simple función... tal ves el entorno esta mal configurado, etc...

si no da error, quiere decir que debes seguir estudiando el código... y que de plano, debes echarle mas genio...

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:56.