2010-11-27 4 views
0

J'ai essayé de sauvegarder mes bases de données MySQL en utilisant PHP, mais quand je définis le chemin pour la sauvegarde, je reçois un autre chemin lors de l'exécution du script.Script PHP pour sauvegarder la base de données

ceci est mon script:

$baseDir = 'backup/'; 
$db; 
$table; 
$server = $_SERVER['HTTP_HOST'] . substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'],'/')); 

c'est à l'intérieur de la fonction de sauvegarde:

global $baseDir; 
global $db; 
global $server; 
$backupFile = $server . "/$baseDir$db/$tab.sql"; 
$query = mysql_query("SELECT * INTO OUTFILE '$backupFile' FROM $tab"); 
if(!$query) 
    echo "\t" .mysql_error() .PHP_EOL; 
else 
    echo " backuped." . PHP_EOL; 

le chemin que je reçois est: c:\wamp\bin\mysql\mysql5.1.36\data\localhost\db\backup\contact_keeper\accounts.sql avec erroCode: 2 (Can`t écriture/création).

+1

Une meilleure solution consiste à utiliser 'mysqldump' - http://dev.mysql.com/doc/refman/5.1/fr/mysqldump.html – ajreal

Répondre

2

SELECT ... INTO OUTFILE est limité à la seule CREATION d'un nouveau fichier. Il ne peut pas remplacer un fichier existant par mesure de sécurité. Assurez-vous également que le compte sous lequel MySQL s'exécute sous Windows dispose d'autorisations d'écriture sur ce répertoire ...\backup\contact_keeper. Il peut avoir seulement lire/exécuter.

Questions connexes