Non riesco a fare il backup di un database con mysqldump...
su una pagina php eseguo il seguente codice:
Qualcuno sa dirmi dove e perchè sbaglio e aiutermi x favore???codice:<? system("mysqldump --opt nome_db > C:\path\backup.txt"); ?>
Grazie.
Non riesco a fare il backup di un database con mysqldump...
su una pagina php eseguo il seguente codice:
Qualcuno sa dirmi dove e perchè sbaglio e aiutermi x favore???codice:<? system("mysqldump --opt nome_db > C:\path\backup.txt"); ?>
Grazie.
Che errore ti da?
Te lo crea il file? Se si cosa c'è scritto?
Hai una password sul mysql?
Sistema operativo?
comincia a vedere cosa ti dice.codice:<?php $risultato = system("mysqldump --opt nome_db > C:\path\backup.txt", $output); ?> echo $risultato; echo $output;
cia
Visto la scritta C:\path\backup.txt sei su win.
Allora ti manca il percorso del mysqldump, lo username (di default dovrebbe essere odbc) e la passw.
c:/percorso_mysql/bin/mysqldump --user=tuo_usr --password=tua_passw nome_db > C:\path\backup.txt
codice:<?php $risultato = system("mysqldump --opt nome_db > C:\path\backup.txt", $output); ?> echo $risultato; echo $output;
ho provato così e $risultato non da nulla mentre $output restituisce 1...
cosa significa?
mmm $risultato se la chiamata al comando nn va a buon fine dovrebbe essere FALSE e in output ci dovrebbe essere il messaggio restituito dopo l'errore...Originariamente inviato da metkappa
codice:<?php $risultato = system("mysqldump --opt nome_db > C:\path\backup.txt", $output); ?> echo $risultato; echo $output;
ho provato così e $risultato non da nulla mentre $output restituisce 1...
cosa significa?
Prova a fare come dice Teuzzo, io non sono praticissimo di win...
ciao
Aveva ragione Teuzzo!!mi mancava il percorso...Grazie a tutti!!!Siete stati Gentilissimi!!!
riesumo la vecchia discussione perchè ho lo stesso problema ma non riesco a risolverlo.
sto testando in locale su windows, ma il server online è su linux.
non succede nulla. nel primo caso $res è sempre =1.Codice PHP:
$bkupath = './db_backups';
exec('C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump -h'.$host.' -u'.$userid.' -p'.$password.' '.$dbname.' > '.$bkupath.'/'.$dbname.'.sql', $output, $res);
if($res>0) echo "errori";
else echo "ok";
//OPPURE
system('C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump -h'.$host.' -u'.$userid.' -p'.$password.' '.$dbname.' > '.$bkupath.'/'.$dbname.'.sql', $output);
mettendo backslash nel path non succede nulla. anche senza path non succede nulla. lasciando degli spazi tra -h e host o tra -u e utente, non succede nulla.
naturalmente password utente host e database sono corretti.
ho dato tutti i diritti di scrittura sulla cartella di destinazione del file, e comunque riesco a scriverci file con php.
ad ogni modo mi servirebbe un path relativo per trovare l'eseguibile mysqldump anche sul server.
AGGIORNAMENTO (scusate ma non posso più editare il messaggio qua sopra):
eseguendo il comando da cmd funziona, mentre in php viene prodotto un file vuoto
naturalmente password utente host e database sono corretti.Codice PHP:
$per = 'C:/Program Files/MySQL/MySQL Server 5.1/bin/';
$bkpath = './db_backups/';
exec($per.'mysqldump -h'.$host.' -u'.$userid.' -p'.$password.' --opt '.$dbname.' > '.$bkpath.$dbname.'.sql');
ho dato tutti i diritti di scrittura sulla cartella di destinazione del file, e comunque riesco a scriverci file con php.
inoltre non capisco perchè se rimuovo l'argomento --opt dalla linea di comando il backup viene eseguito correttamente lo stesso, mentre in php non viene più prodotto nemmeno il file: non succede nulla.
ho il sospetto che il problema stia nell'indirizzo dell'eseguibile mysqldump, dato che non funziona ne con gli slash ne con i backslash. ad ogni modo mi servirebbe un path relativo per trovarlo anche sul server remoto, dove c'è linux.
potrebbe altrimenti essere qualche impostazione di php?
grazie