mdk ..
Usando el script que pusistes al principio (con las cabeceras HTTP para que sea enviado al navegador) Y usanlo mysqldump con los parámetros que puse a mi me funciona .. (en windows).
Lo que tienes que asegurarte bien es la ruta de donde se encuentre tu mysqldump y por supuesto que la Base de datos que ahí indicas y los datos de conexión a esta sean correctos.
Lo otro que puedes usar es ..
Quitando las cabeceras (header ..) y usando:
$executa = "c:\apache\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero";
Con el > $fichero te va a generar el fichero.sql en el directorio del servidor donde ejecutes tu .php ... y luego tendras q bajartelo tu a mano (via FTP) o poner un link al fichero.sql para bajaterlo con el navegador "manualmente" ..
Un ejemplo de lo que genera (es una Base de datos con solo una tabla):
Cita: -- MySQL dump 8.21
--
-- Host: localhost Database: usuarios
---------------------------------------------------------
-- Server version 3.23.49
--
-- Table structure for table 'autentificator'
--
DROP TABLE IF EXISTS autentificator;
CREATE TABLE autentificator (
ID smallint(6) unsigned NOT NULL auto_increment,
usuario tinytext NOT NULL,
pass tinytext NOT NULL,
nivel_acceso smallint(4) unsigned NOT NULL default '0',
PRIMARY KEY (ID),
UNIQUE KEY ID (ID)
) TYPE=MyISAM PACK_KEYS=1;
/*!40000 ALTER TABLE autentificator DISABLE KEYS */;
--
-- Dumping data for table 'autentificator'
--
LOCK TABLES autentificator WRITE;
INSERT INTO autentificator VALUES (1,'Admin','21232f297a57a5a743894a0e4a801fc3',0);
/*!40000 ALTER TABLE autentificator ENABLE KEYS */;
UNLOCK TABLES;
Un saludo,
pd: Herminio Heredia San .. Si al mysqldump lo le indicas salida > archivo.tal .. lo "tira" a "consola" (al buffer de salida) .. por eso se usan esas cabeceras HTTP para darlo al navegador para descarga .. Todo eso porqué se ejecuta via system() que ejecuta el comando y lo entrega al buffer de salida ..Si lo ejecutarmos con exec() .. tendríamos el resultado (la ejecución) en un array .. ahí si que debería usarse el file() o un "header -> echo .." para dejarlo en el servidor o entregarlo a descargar (sin usar > fichero.tal en la propia sentencia mysqldump ..)