Database backup

dakata__92

Super Moderator
Колеги, опитвам се да си направя backup но не ми се получава... Къде греша? Ползвам готови кодове от нета като този:
PHP:
$dbname = 'oop';
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';

$backup_file = $dbname . date("Y-m-d-H-i-s") . '.gz';
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ".
           "test_db | gzip > $backup_file";

system($command);

или

PHP:
//ENTER THE RELEVANT INFO BELOW
        $mysqlDatabaseName ='oop';
        $mysqlUserName ='root';
        $mysqlPassword ='';
        $mysqlHostName ='localhost';
        $mysqlExportPath ='Backup.sql';

        //DO NOT EDIT BELOW THIS LINE
        //Export the database and output the status to the page
        $command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ~/' .$mysqlExportPath;
        exec($command);

Не се получава и това е...
 
Виж тази тема(ако вече не си). Мисля, че ще ти помогне.
http://stackoverflow.com/questions/2170182/how-to-backup-mysql-database-in-php
 
vinsbg каза:
Виж тази тема(ако вече не си). Мисля, че ще ти помогне.
http://stackoverflow.com/questions/2170182/how-to-backup-mysql-database-in-php
Принципно я прегледах, но защо с exec не става? Гледам, че кода е доста къс и опростен което ме и възпира да си пиша сам класс с обработка. :)
 
Нещо, което може да е са правата на потребителя, който рънва командата. т.е apache-то и дали има права да използва и пише в папките. Доколкото знам апаче-то използва правата а текущия потребител..
 
vinsbg каза:
Нещо, което може да е са правата на потребителя, който рънва командата. т.е apache-то и дали има права да използва и пише в папките. Доколкото знам апаче-то използва правата а текущия потребител..
Връщат ми ерор 1 exec и system ... Дали е защото съм на Win не на Линукс ? Има ли значение за подаването на командите?
 
Много вероятно е да не ти е настроен path variable. Пробвай да посочиш пълния път до командата. Пробвай цялата команда в cmd.
 
djman каза:
Много вероятно е да не ти е настроен path variable. Пробвай да посочиш пълния път до командата. Пробвай цялата команда в cmd.
Незная какъв е целият път. За Уин и Линукс е?
 
Ъъм. Как ползваш програма, а не знаеш дали я имаш?? Ти знаеш по-добре какво имаш в компа) На уин знаеш обикновено къде са програмите...
 
djman каза:
Ъъм. Как ползваш програма, а не знаеш дали я имаш?? Ти знаеш по-добре какво имаш в компа) На уин знаеш обикновено къде са програмите...
PHP:
$dbname = 'oop';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';
$path = 'backups/'.$dbname.'-'.date('Y_m_d-s').'.sql';

$command = "\\xampp\\mysql\\bin\\mysqldump -h $dbhost -u $dbuser ";
if(!empty($dbpass)){
	$command .= '-p '.$dbpass;
}
$command .= " $dbname > $path";
print $command;
exec($command);
След доста ровене така стана, но сега изниква вторият проблем, който е че ако премина на хостинг от къде ще викам mysqldump? Копирах го в директорията стана но идва въпросът дали е безопасно да качвам exe файла? Е наистина си изисква нали да се подава парола за да се конектне към базата и хост с юзър но все пак да си попитам.
 

Back
Горе