Foros del Web » Programando para Internet » PHP »

Error al crear backup

Estas en el tema de Error al crear backup en el foro de PHP en Foros del Web. hola amigos ... al tratar de generar un backup de mi BD con PHP se me genera el siguiente error Warning: Cannot modify header information ...
  #1 (permalink)  
Antiguo 03/10/2005, 10:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Error al crear backup

hola amigos ... al tratar de generar un backup de mi BD con PHP se me genera el siguiente error

Warning: Cannot modify header information - headers already sent by (output started at C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php:3) in C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php:3) in C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php:3) in C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php:3) in C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php:3) in C:\SERVIDOR\WEB\SIGDOC\PUBLIC\ExportarBD.php on line 11

Error ejecutando comando: C:\SERVIDOR\mysql\mysqldump.exe -u root --password=cenco --opt sigdoc

El codigo es el siguiente:

Código PHP:
<html>
<body>
<? 
// Nombre del archivo de con el cual queremos que se guarde la base de datos 
$filename "fichero.sql"//ruta del archivo a generar 
// Cabezeras para forzar al navegador a guardar el archivo 
header("Pragma: no-cache"); 
header("Expires: 0"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-type: application/force-download"); 
header("Content-Disposition: attachment; filename=$filename"); 

$usuario="root";  // Usuario de la base de datos, un ejemplo podria ser 'root' 
$passwd="cenco";  // Contraseña asignada al usuario 
$bd="sigdoc";  // Nombre de la Base de Datos a exportar 
// Funciones para exportar la base de datos 
$executa "C:\SERVIDOR\mysql\mysqldump.exe -u $usuario --password=$passwd --opt $bd"
system($executa$resultado); 

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error 
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; } 

?> 
</body>
</html>
Que estara pasando ?????
  #2 (permalink)  
Antiguo 03/10/2005, 17:53
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 1
Es, porque envias datos HTML, antes de poder enviar las cabeceras HTTP que le indican que se viene un archivo.

Elimina los tags HTML como <html> <body> o leete las FAQs.

http://www.forosdelweb.com/showpost....0&postcount=72
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #3 (permalink)  
Antiguo 04/10/2005, 06:37
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Nada de nada

Oye ... hice el cambio y no me exporta nada de nada. No me saca errores pero tampoco me exporta. La pagina se muestra sin conexion.

Asi es como esta:

Código PHP:
<?
// Nombre del archivo de con el cual queremos que se guarde la base de datos 
$filename "fichero.sql"//ruta del archivo a generar 
// Cabezeras para forzar al navegador a guardar el archivo 
header("Pragma: no-cache"); 
header("Expires: 0"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-type: application/force-download"); 
header("Content-Disposition: attachment; filename=$filename"); 

$usuario="root";  // Usuario de la base de datos, un ejemplo podria ser 'root' 
$passwd="cenco";  // Contraseña asignada al usuario 
$bd="sigdoc";  // Nombre de la Base de Datos a exportar 
// Funciones para exportar la base de datos 
$executa "C:\\SERVIDOR\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd"
system($executa$resultado); 

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error 
if ($resultado) { 
    echo 
"<H1>Error ejecutando comando: $executa</H1>\n"

?>
Alguna idea ???
  #4 (permalink)  
Antiguo 04/10/2005, 12:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Sr Master Solucion

.... Necesito Solucion ..... :-d :-d
  #5 (permalink)  
Antiguo 05/10/2005, 11:33
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Ya no me genera error, pero...

Este es el codigo con ciertas modificaciones ... no me genera error. Pero tampoco me crea ningun archivo.

Código PHP:
<?  
function backup_mysql()
{
$dbhost="localhost";
$dbuname="cenco";
$dbpass="cenco";
$
$dbname="sigdoc";

// Crear nombres de los ficheros backup
$fecha=time(); // Fecha actual
$archivo=gmstrftime("%y-%m-%",$fecha);
$archivo=$archivo.'backupsigdoc.sql'// Archivo sql

@system('C:\\SERVIDOR\\mysql\binmysqldump.exe --host='.$dbhost.' --user='.$dbuname.' --password='.$dbpass.' --opt --quick '.$dbname.' > '.$archivo.'',$salida2); //para linux

}
backup_mysql();
$ahora=time();
$texto=gmstrftime("%y-%m-%d",$ahora);
?>
Que esta pasando....
  #6 (permalink)  
Antiguo 05/10/2005, 20:48
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 1
Lo que sucede es que no estas imprimiendo el resultado, te falta volcar el contenido que te devuelve system().

Simplemente le agrego un echo al final del code.

Código:
 <? 
// Nombre del archivo de con el cual queremos que se guarde la base de datos  
$filename = "fichero.sql"; //ruta del archivo a generar  
// Cabezeras para forzar al navegador a guardar el archivo  
header("Pragma: no-cache");  
header("Expires: 0");  
header("Content-Transfer-Encoding: binary");  
header("Content-type: application/force-download");  
header("Content-Disposition: attachment; filename=$filename");  

$usuario="root";  // Usuario de la base de datos, un ejemplo podria ser 'root'  
$passwd="cenco";  // Contraseña asignada al usuario  
$bd="sigdoc";  // Nombre de la Base de Datos a exportar  
// Funciones para exportar la base de datos  
$executa = "C:\\SERVIDOR\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd";  
system($executa, $resultado);  

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error  
echo $resultado;
}  
?>  
La verdad que ahora me agarro la duda, nose como funcione mysqldump, pero no creo que te tire toda la base de datos por la consola, si es asi, el script deberia funcionar, pero lo mas probable es que lo guarde en otro lado, que entonces deberias ir a recoger.

Proba, ya diras...
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #7 (permalink)  
Antiguo 07/10/2005, 08:59
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola ... mira como esta el codigo ...

Código PHP:
<?   
function backup_mysql() 

$dbhost="localhost"
$dbuname="cenco"
$dbpass="cenco"
$
$dbname="sigdoc"

// Crear nombres de los ficheros backup 
$fecha=time(); // Fecha actual 
$archivo=gmstrftime("%y-%m-%",$fecha); 
$archivo=$archivo.'backupsigdoc.sql'// Archivo sql 

@system('C:\\SERVIDOR\\mysql\binmysqldump.exe --host='.$dbhost.' --user='.$dbuname.' --password='.$dbpass.' --opt --quick '.$dbname.' > '.$archivo.'',$resultado); //para linux 
echo $resultado;

backup_mysql(); 
$ahora=time(); 
$texto=gmstrftime("%y-%m-%d",$ahora); 
?>
Este es el ultimo codigo modificado...

No genera error ... la variable $resultado visualiza 1 (uno)

... y para acabar de completar no exportar nada... que sera ???
  #8 (permalink)  
Antiguo 07/10/2005, 16:38
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 1
Claro, ahi el code si esta mejor, porque volcas el resultado en un archivo, te tiraba un 1 porque eso significa que la operacion se realizo con exito, ahora el backup tiene que estar dentro de la carpeta del mysqldump.exe

Entonces lo que tendrias que hacer, si queres que se pueda descargar, y no simplemente hacer backup, es que el output, o sea la variable $archivo, ponerle un path al que apache pueda acceder, o sea dentro de la carpeta donde tenes tu script.

Y una vez que este guardado, ahi si lo descargas con un readfile($url).
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #9 (permalink)  
Antiguo 10/10/2005, 10:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
Nada de nada

Hola Master ... sabes revice la carpeta y no esta el backup.

Que estara pasando ... dode la enviara ????

  #10 (permalink)  
Antiguo 10/10/2005, 16:12
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 1
Proba ejecutando eso por la consola, a ver si asi realiza el backup. y en ese caso fijate bien donde lo guarda, si funciona bien, entonces nose cual sera el problema.

Sino funciona proba sacandole el:
Código:
> '.$archivo.'
 


para que simplemente te escupa el resultado cuando despues haces el echo $resultado.
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #11 (permalink)  
Antiguo 11/10/2005, 09:36
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 19 años, 3 meses
Puntos: 0
De acuerdo Master .... gracias

Cada dia quiero mas esta comunidad....


Muchas gracias muchachos.


Son super ... genios. La mejor comunidad hispana en foros.
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 14:44.