Foros del Web » Programando para Internet » PHP »

Borrar fichero en servidor 1and1

Estas en el tema de Borrar fichero en servidor 1and1 en el foro de PHP en Foros del Web. Buenas tengo un codigo que probado en mi pc en localhost me funciona bien pero al subirlo a mi servidor, en este caso 1and1 me ...
  #1 (permalink)  
Antiguo 19/06/2008, 09:20
 
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Borrar fichero en servidor 1and1

Buenas tengo un codigo que probado en mi pc en localhost me funciona bien pero al subirlo a mi servidor, en este caso 1and1 me salta el siguiente mensaje:
Código:
Warning: unlink() [function.unlink]: No such file or directory in /homepages/21/d228437082/htdocs/php/borra.php on line 7

Warning: unlink() [function.unlink]: No such file or directory in /homepages/21/d228437082/htdocs/php/borra.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /homepages/21/d228437082/htdocs/php/borra.php:7) in /homepages/21/d228437082/htdocs/php/borra.php on line 10
Estos son los archivos que uso:
lista_borrar.php
Código PHP:
<html>
<head>
   <title>Borrar</title>
</head>
<body>
<H1>Borrar</H1>

<?php
   
include("conex.phtml");
   
$link=Conectarse();
   
$result=mysql_query("select * from productos ORDER BY producto, fabricante, modelo ASC",$link);
?>
   <table border=1 cellspacing=1 cellpadding=1>
      <tr><td><b>Producto</b></td><td><b>Fabricante</b></td><td><b>Modelo</b></td><td><b>Potencia</b></td><td><b>Caudal</b></td><td><b>Presion</b></td><td><b>PDF</b></td><td><b>IMG</b></td><td><b>Borrar</b></td></tr>
<?php      

   
while($row mysql_fetch_array($result)) {
   
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><a href=\"%s\" title=\"Ver PDF\" target=\"_blank\"><img src=\"images/pdf.gif\" alt=\"Ver PDF\" border=\"0\" /></a></td><td><a href=\"%s\" rel=\"gb_image[]\" title=\"%s\"><img src=\"images/imagen.gif\" alt=\"Ver PDF\" border=\"0\" /></a></td><td><a href=\"borra.php?id=%d&pdf=%s&img=%s\">Borrar</a></td></tr>"$row["producto"],$row["fabricante"],$row["modelo"],$row["potencia"],$row["caudal"],$row["presion"],$row["pdf"],$row["img"],$row["modelo"],$row["id"],$row["pdf"],$row["img"]);
   }
   
mysql_free_result($result);
   
mysql_close($link);
?>
</table>
</body>
</html>
borra.php
Código PHP:
<?php
   
include("conex.phtml");
   
$link=Conectarse();
   
$id=$_REQUEST['id'];
   
$pdf=$_REQUEST['pdf'];
   
$img=$_REQUEST['img'];
   
unlink("$pdf");
   
unlink("$img");
   
mysql_query("delete from productos where id = $id",$link);
   
header("Location: lista_borrar.php");
?>
Por lo que veo es problema del unlink, se puede borrar de alguna otra manera los archivos subidos?

Gracias.
  #2 (permalink)  
Antiguo 19/06/2008, 09:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Borrar fichero en servidor 1and1

Hola josekast,

Si te fijas el problema es que no encuentra el archivo o directorio, debes de comprobar primero que el archivo exista usando file_exists() antes de borrarlo.

Saludos.
  #3 (permalink)  
Antiguo 19/06/2008, 12:52
 
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Borrar fichero en servidor 1and1

Tenias razón que tonto fui, paso que subí la BD del localhost al servidor y no la subí limpia y deje las pruebas que había hecho... na la subí vacía y hice una prueba y funciono.
Gracias.

Una cosa mas a ver si me puedes ayudar. Al introducir datos al enviarlos me salta el siguiente mensaje:
Código:
El fichero se ha subido al servidor correctamente

Warning: Cannot modify header information - headers already sent by (output started at /homepages/21/d228437082/htdocs/php/procesar.php:37) in /homepages/21/d228437082/htdocs/php/procesar.php on line 38
En el archivo procesar.php es el siguiente:
Código PHP:
<?php
  
// Recoge el valor de fabricante del formulario
  
$producto $_REQUEST["producto"];
  
$fabricante $_REQUEST["fabricante"];
  
$modelo $_REQUEST["modelo"];
  
$potencia $_REQUEST["potencia"];
  
$caudal $_REQUEST["caudal"];
  
$presion $_REQUEST["presion"];
  
// Recoge el nombre del fichero que se habrá indicado en el formulario pdf
  
$pdf $_FILES["pdf"]["name"];
  
$img $_FILES["img"]["name"];
  
// Recoge la ubicación temporal del fichero en el servidor pdf
  
$pdf_tmp $_FILES["pdf"]["tmp_name"];
  
$img_tmp $_FILES["img"]["tmp_name"];
  
// Comprueba que se ha indicado un fichero en el formulario pdf
  
if ($pdf == "") {
    echo 
"<p>¡Error! No se ha especificado ningún fichero PDF</p>\n";
  }
 
  
// Ruta completa (incluido el nombre del fichero pdf)
  
$destino_pdf "./ficheros/" $pdf;
  
$destino_img "./ficheros/" $img;
  
// Copia el fichero al directorio de nuestro servidor, cogiéndolo de la ubicación temporal PDF
  
if (move_uploaded_file($pdf_tmp$destino_pdf)) {
  
    
// Conecta con la Base de Datos e inserta la información de la ruta y comentario del fichero
    
include("conex.phtml");
    
$conexion=Conectarse();
    
mysql_select_db("base_de_datos"$conexion);
    
    
// Copia el fichero al directorio de nuestro servidor, cogiéndolo de la ubicación temporal IMG
    
move_uploaded_file($img_tmp$destino_img);
    
    
$sentencia "INSERT INTO productos (producto,fabricante,modelo,potencia,caudal,presion,pdf,img) VALUES ('".$producto."','".$fabricante."','".$modelo."','".$potencia."','".$caudal."','".$presion."','".$destino_pdf."','".$destino_img."')";
    
$resultado mysql_query($sentencia$conexion);
    if (
$resultado) {
       echo 
"<p>El fichero se ha subido al servidor correctamente</p>\n";
       
header("Location: intro.php");
    }
  }
  else {
    echo 
"<p>Se ha producido un error al subir el fichero</p>\n";
  }
?>
La linea de error es esta:
Código:
       echo "<p>El fichero se ha subido al servidor correctamente</p>\n";
	   header("Location: intro.php");
En localhost no me tirar ningún error pero desde el servidor si. Alguna idea?
Por ejemplo también uso un header en el codigo de borrar como se puede ver en el 1er post y ese me va bien.
  #4 (permalink)  
Antiguo 19/06/2008, 13:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 19 años
Puntos: 6
Respuesta: Borrar fichero en servidor 1and1

El header, como su nombre indica, debe aparecer en la cabecera del documento generado. Es decir, antes de cualquier contenido HTML. En el borra.php funciona porque el código que hay antes del header no genera salida. Sin embargo, en procesar.php primero generas salida "el fichero se ha subido...." y luego haces el header. Eso no se puede hacer, ni así tiene mucha lógica.

Si lo que quieres es mostrar una pantalla de confirmación, generas el HTML y un enlace para que vuelva a la intro.php. Si no, directamente haces la redirección al intro.php, sin mostrar ningún tipo de mensaje.

Saludos

Última edición por juanfuentes; 19/06/2008 a las 13:26 Razón: Error mecanográfico
  #5 (permalink)  
Antiguo 19/06/2008, 14:23
 
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Borrar fichero en servidor 1and1

Cita:
Iniciado por juanfuentes Ver Mensaje
El header, como su nombre indica, debe aparecer en la cabecera del documento generado. Es decir, antes de cualquier contenido HTML. En el borra.php funciona porque el código que hay antes del header no genera salida. Sin embargo, en procesar.php primero generas salida "el fichero se ha subido...." y luego haces el header. Eso no se puede hacer, ni así tiene mucha lógica.

Si lo que quieres es mostrar una pantalla de confirmación, generas el HTML y un enlace para que vuelva a la intro.php. Si no, directamente haces la redirección al intro.php, sin mostrar ningún tipo de mensaje.

Saludos
gracias, ahora k lo dices tienes razón

he dejado solo
Código:
header("Location: intro.php");
y he quitado
Código:
echo "<p>El fichero se ha subido al servidor correctamente</p>\n";
Y ahora funciona bien.
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 09:48.