使用PHP进行MySQL数据库备份

时间:2014-02-20 11:08:10

标签: php mysql mysqli backup database-backups

我已使用以下内容检查我的服务器上是否启用了exec()

public function exec_enabled() {
  $disabled = explode(',', ini_get('disable_functions'));
  return !in_array('exec', $disabled);
}

我发现它已在我的服务器上启用了。现在我正在尝试运行以下内容,并且数据库没有得到备份:

exec('mysqldump --user=foo --password=bar --host=localhost foobar > backup.sql');

我也试过

exec('mysqldump -u foo -p bar foobar > backup.sql');

但它也没有用。此外,我没有收到任何错误(错误报告已打开)。谁能告诉我我在这里做错了什么?

4 个答案:

答案 0 :(得分:0)

语法:

mysqldump -u username -ppass_word database_name table_name > path/sql_file_name.sql

答案 1 :(得分:0)

这应该有效 -

exec('mysqldump -u foo --password=bar --host=localhost foobar > backup.sql');

答案 2 :(得分:0)

在* nix系统中,使用WHICH命令显示mysqldump的位置,试试这个:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$dbname = 'test';
$mysqldump=exec('which mysqldump');

$backup_file = $dbname .'.gz';
$command = "$mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ".
           "test_db | gzip > $backup_file";

exec($command);
?>

答案 3 :(得分:0)

将完整路径放到mysql转储似乎可以正常工作

exec('complete\path\to\mysqldump.exe -uUSERNAME -pPASSWORD DATABASE_NAME > output_folder_path/filename.sql');