PHP - mysqldump

 
Vista:

mysqldump

Publicado por Migue (4 intervenciones) el 10/01/2006 13:53:37
Hola a todos, estoy intentando hacer un backup de mi base de datos. Mi idea es hacerlo a través de un fichero Php, pero no se por qué el mysqldump no me funciona. Escribo desde el sql la línea de comando y me funciona correctamente, pero desde el php llamar a un comando externo hay que usar la función system(), y es ahí donde no me funciona, parece que no me reconoce el mysqldump o no se qué pasa, estoy viendo páginas y todo el mundo utiliza el system().
Lo estoy probando de momento en local, tengo Apache, mysql y win XP para luego subirlo al servidor en Linux.

Tengo dos ficheros php, MySQLDump.php que es la clase y backup.php:

MySQLDump.php
<?php
class MySQLDump {
/**
* The backup command to execute
* @private
* @var string
*/
var $cmd;

/**
* MySQLDump constructor
* @param string dbUser (MySQL User Name)
* @param string dbPass (MySQL User Password)
* @param string dbName (Database to select)
* @param string dest (Full dest. directory for backup file)
* @param string zip (Zip type; gz - gzip [default], bz2 - bzip)
* @access public
*/
function MySQLDump($dbUser, $dbPass, $dbName, $dest,
$zip = 'gz')
{
$zip_util = array('gz'=>'gzip','bz2'=>'bzip2');
if (array_key_exists($zip, $zip_util)) {
$fname = $dbName . '.' . date("w") . '.txt.' . $zip;
$this->cmd = 'mysqldump -u' . $dbUser . ' -p' . $dbPass . ' --add-drop-table' .
' ' . $dbName . ' --add-drop-table' . '| ' . $zip_util[$zip] . ' >' .
$dest . '/' . $fname;
} else {
$fname = $dbName . '.' . date("w") . '.txt';
$this->cmd = 'mysqldump -u' . $dbUser . ' -p' . $dbPass . ' --add-drop-table' .
' ' . $dbName . ' >' . $dest . '/' . $fname;
}
}

/**
* Runs the constructed command
* @access public
* @return void
*/
function backup()
{
system($this->cmd,$error);
//echo $this->cmd;
if ($error) {
trigger_error('Backup failed: ' . $error);
}
}
}
?>

backup.php
<?php
// Include the MySQLDump class
require_once 'MySQLDump.php';

$dbUser = 'admin'; // db User
$dbPass = 'xxx'; // db User Password
$dbName = 'base'; // db name
$dest = '/buckups'; // Path to directory
//$zip = 'gz'; // ZIP utility to compress with

// Instantiate MySQLDump
$mysqlDump = new MySQLDump($dbUser, $dbPass, $dbName, $dest,
$zip);

// Perform the backup
$mysqlDump->backup();
?>

Sencillito, llamo al backup.php y luego en la clase hace:
system($this->cmd,$error); pero en ésta línea me da el error, el $this->cmd contiene el mysqldump. El error que me sale es:Notice: Backup failed: 1 in C:\web\Coyote\MySQLDump.php on line 62.
Alguna sugerencia?? por qué no me funciona el system? Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:mysqldump

Publicado por Mike79 (669 intervenciones) el 10/01/2006 14:05:06
Aja, y ¿donde esta tu archivo mysqldump ?
Se me hace que no lo esta encontrando.

Deberia decir: c:\mysql\bin\mysqldump
o algo parecido.

Php le dice al sistema, ejecutalo, pero el sistema no sabe donde encontrarlo, por eso esta generando un error, lo mismo va a pasar con la opción de comprimir el archivo si no especificas todo el path completo.

Otra solución, es agregarlo en el path, generalmente en los sistemas linux no hay tanto ese problema, por que el sistema si encuentra los archivos.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar