Foros del Web » Programando para Internet » PHP »

¿porque unlink(); devuelve warning para rutas relativas?

Estas en el tema de ¿porque unlink(); devuelve warning para rutas relativas? en el foro de PHP en Foros del Web. Estoy borrando archivos con unlink(); y note algo que me suena a raro. Si incluyo rutas absolutas borra los archivos, pero si en cambio paso ...
  #1 (permalink)  
Antiguo 18/12/2010, 19:50
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
¿porque unlink(); devuelve warning para rutas relativas?

Estoy borrando archivos con unlink(); y note algo que me suena a raro.
Si incluyo rutas absolutas borra los archivos, pero si en cambio paso rutas relativas borra el archivo pero además devuelve un warning.


Tengo estas carpetas:
root/php/archivoQueBorraLasImg.php
root/imagenes/miniaturas/ (aca las imagenes)
root/imagenes/fotos/ (aca las imagenes)

Ahora estamos dentro del archivo "archivoQueBorraLasImg.php"

Si pongo rutas absolutas funciona perfecto.
ej:
$ruta="root/imagenes/miniaturas/imagen.png";
O en remoto:
$ruta="http://misitio.com/imagenes/miniaturas/imagen.gif";

y ahora borramos el archivo.
if(file_exists($ruta))
{
if(unlink($ruta)) {
print "El archivo fue borrado";
}
else {
print "Este archivo no existe";
}
}

Pero si en cambio hago esto:
$ruta="../imagenes/miniaturas/imagen.png";

borra el archivo pero devuelve un warning.

O sea, le pase rutas absolutas y listo. pero me quedo la duda de porque sucede esto. ¿porque será?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 18/12/2010, 19:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

¿podrías decir que tipo de Warning obtienes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/12/2010, 19:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

¿Cuál es el mensaje que muestra? No debería dar problemas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 18/12/2010, 20:10
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

Bueno, al parecer el error estaba en que pasaba el parametro sin comillas
if(file_exists($ruta))

ahora lo hice asi y funcionó
if(file_exists("$ruta"))

p/d: diculpen, no vi sus respuestas (fueron demasiado rapidas ja, muchas gracias)
ahora le paso el warning

edito:
aca esta:
Warning: unlink(../imagenes/miniaturas/) [function.unlink]: Permission denied in C:\xampp\htdocs\2romerositios\cnr\www\php\eliminar _noticia.php on line 15

la carpeta "imagenes" esta en C:\xampp\htdocs\2romerositios\cnr\www\ "acá"

Última edición por cristian_cena; 18/12/2010 a las 20:15
  #5 (permalink)  
Antiguo 18/12/2010, 20:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

Cita:
Iniciado por cristian_cena Ver Mensaje
Bueno, al parecer el error estaba en que pasaba el parametro sin comillas
if(file_exists($ruta))

ahora lo hice asi y funcionó
if(file_exists("$ruta"))
eso si no me lo trago, pues una variable ni siquiera deberías pasarla con comillas si la piensas usar individualmente, es una patraña!!

el error debe ser otro, y bueno, si traduces el mensaje del Warning te podrías dar una pista del verdadero problema...

no lo tomes a mal, simplemente no lo creo... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 18/12/2010, 20:36
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

mm aver, comparto el codigo completo del archivo que elimina las imagenes.

Intente poner mas simple aqui la estructura de carpetas tanto como el codigo para que sea mas facil para ustedes ayudarme.

pero bueno, me haces notar que en algo le estoy errando.

Código:
session_start();
require_once("conexion.php");

if($_SESSION["usuario"]){

	/*ELIMINA REGISTRO*************************************************/
	$sql="delete from noticias where id=".$_GET["id"]."";
	$respuesta=mysql_query($sql,$conexion);

	/*ELIMINA ARCHIVOS*************************************************/
	$dir_mini="../img/noticias/miniaturas/".$_GET["ic"]."";
	if(file_exists("$dir_mini")) 
	{ 
		if(unlink($dir_mini)) {
		print "El archivo fue borrado"; 
		} 
		//else {
		//print "Este archivo no existe"; 
		//}
	}
	$dir_foto="../img/noticias/fotos/".$_GET["il"]."";
	if(file_exists("$dir_foto")) 
	{ 
		if(unlink($dir_foto)) {
		print "El archivo fue borrado"; 
		} 
		//else {
		//print "Este archivo no existe"; 
		//}
	}
	
	echo "<script type='text/javascript'>
	window.location='../panel.php';
	</script>";
}
else{
	echo"<script type='text/javascript'>
	alert('debe registrarse para acceder a este contenido');
	window.location='../../index.php';
	</script>";
}
La estructura de carpetas verdadera es:

C:/xampp/htdocs/2romerositios/cnr/www/img/noticias/miniaturas/
C:/xampp/htdocs/2romerositios/cnr/www/img/noticias/fotos/
C:/xampp/htdocs/2romerositios/cnr/www/php/eliminar_noticia.php
  #7 (permalink)  
Antiguo 18/12/2010, 20:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

tengo una hipotesis: php no resuelve efectivamente las rutas relativas en variados ecenarios...

quizá podrías usar realpath() para resolver la ruta antes de emplearla... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 18/12/2010, 20:47
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

Gracias pateketrueke por tu paciencia.

Me acabo de dar cuenta que el warning aparece cuando elimino un registro y no encuentra las imagenes. Porque cuando se crea la noticia no es obligatorio subir imagenes.

O, sea, si se creo una noticia y se subieron imagenes, la borra perfecto.
Pero si se creo la noticia y no se subieron imagenes, al borrarla y no encontrar las imagenes se muestran los warning.
  #9 (permalink)  
Antiguo 18/12/2010, 20:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

cierto, ahora entiendo porque en el mensaje de error no aparecía ningún nombre de archivo y si la ruta:
Cita:
Warning: unlink(../imagenes/miniaturas/) [function.unlink]: Permission denied in [...]
pues en sistemas *nix todo es archivo, incluso una carpeta, de ahí la advertencia...

en todo caso la función precisa sería is_file() que comprueba que efectivamente se trate de un archivo, y además verifica su existencia...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 18/12/2010, 21:02
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

jojo!!! es-pec-ta-cu-lar!! problema resuelto, me quito el sombrero hermano muchas gracias
  #11 (permalink)  
Antiguo 18/12/2010, 21:12
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: ¿porque unlink(); devuelve warning para rutas relativas?

Genio genio!!!! mataste dos pajaros de un tiro porque con file_exists() tampoco me cargaba la imagen en remoto. cosa que en local funcionaba pero me hiba a dar problemas al subir el sitio.

Etiquetas: relativas, rutas, unlink, warning
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 04:10.