Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2005, 11:24
dubafluye
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 0
Restaurar base de datos desde fichero subido via http

Hola de nuevo por aquí con un problema que llevo dando vueltas dos meses y no encuentro la solución.

Tengo en php una utilidad que en local recupera la base de datos mysql, hace una serie de operaciones y me crea un fichero de una de las tablas tabla.sql que subo con un formulario a un directorio denominado backup, al subir ese fichero se lanza una aplicación en el servidor que en teoria debería reataurar la base de datos con los nuevos datos que ha recuperado en local pero... ¡oh curiosidad! No incluye los nuevos productos, se queda en el día anterior que subí la base de datos, lo curioso es que si elimino el fichero tabla.sql de la ubicación desde la que deberia recuperarla en el servidor el script da error, osea que funciona, pero no lo hace corrrectamente.

Este es el codigo del formulario formenviar.php:
Código PHP:
<center>Enviar la base de datos:
<
form type="text" method="POST" action="enviar.php" enctype='multipart/form-data'>
<
input type="file" name="archivo" size="20" class="cajon">
<
INPUT TYPE="SUBMIT" value="Enviar base de datos" class="boton">
</
form>
</
center
y este enviar.php:

Código PHP:
<HTML>
<HEAD>
<TITLE>Formulario enviar</TITLE>
<link rel="stylesheet" type="text/css" href="../../css/gestion.css"> 
</HEAD>
<BODY>
<?require ("../conex.php");
$extensiones=array("html","exe","php");
$path="/home/httpd/vhosts/dominio.com/httpdocs/backup/";
$nombre=$HTTP_POST_FILES['archivo']['name'];
$tamanio=$HTTP_POST_FILES['archivo']['size'];
$tipo=$HTTP_POST_FILES['archivo']['type'];
$var explode(".","$nombre");
$num count($extensiones);
$valor $num-1;
for(
$i=0$i<=$valor$i++) {
    if(
$extensiones[$i] == $var[1]) {
    echo 
"Tipo de Archivo no admitido";
    exit;
    }
}
if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name']))
 {
  
copy($HTTP_POST_FILES['archivo']['tmp_name'], "$path$nombre");
  echo 
"El archivo se ha subido correctamente al servidor, muchas gracias <p>";
  echo 
"Nombre: $nombre <p>";
  echo 
"Tamaño: $tamanio <p>";
  echo 
"Tipo: $tipo";
 }
else { echo 
"Error al subir el archivo"; }
echo 
"Su base esta siendo restaurada.......\n<br>";
$filename "/home/httpd/vhosts/dominio.com/httpdocs/backup/tabla.sql"
$executa "mysqldump --host=localhost --user=usuario --password=contraseña --opt basededatos tabla <$filename"
system($executa$resultado); 
if (
$resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }
else {
echo 
"Fin. Su base está emplazada en su alojamiento.";
}
//Después de restaurarla borramos el fichero tabla.sql del servidor
$return = @unlink('/home/httpd/vhosts/dominio.com/httpdocs/backup/tabla.sql');
// Return FALSE if not found
var_dump($return);
?>
<br>
</BODY>
</HTML>
No sé qué puede fallar, si ejecuto el fichero tabla.sql desde phpmyadmin lo restaura perfectamente, pero desde el script no.

Agradecería una ayudita. Gracias