2017-10-28 150 views
-2

我在本地服务器备份数据库从PHP

$dump_path = "backups"; 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$command=$dump_path.'mysqldump -h '.$host.' -u '.$user.' dental > dental_b.sql'; 
if (system($command)) { 
    echo "YES" ; 
} else { 
    echo "Error" ; 
} 

上测试该脚本,但为什么不是该脚本执行,并显示错误虽然从数据库中的所有数据是真实的。

+0

你想执行什么命令?现在它是'backupsmysqldump -h localhost -u root dental> dental_b.sql'。你确定'$ dump_path'应该是命令的前缀吗? –

+0

我知道了,但是我需要解决这个问题 –

回答

1

我敢肯定,如果您在本地主机上使用mysqldump,则不需要主机选项。你连接你的命令的方式看起来让我感到困惑。让我告诉你什么对我有用。我一直用这个:

<?php 

$user = "root"; 
$pass = ""; 
$database = "dental"; 

// File name 
$file_name = 'dental_b.' . date('mdY.Hia') . '.sql.gz'; 

// Storage directory 
$storage_dir = __DIR__ . '/backups'; 
if(! is_dir($storage_dir)) 
    mkdir($storage_dir, 0777, TRUE); 

// Absolute path to new file 
$absolute_path = $storage_dir . '/' . $file_name; 

// Create the backup file 
exec('mysqldump -u ' . $user . 
    ' -p' . $pass . 
    ' ' . $database . 
    ' | gzip > ' . $absolute_path); 

是的,我gzipping文件。我想你会发现这是存储,电子邮件一个不错的选择,等

编辑---

如果不使用密码,你不应该使用-p。在这种情况下,你想改变命令。

+0

我很感谢详细的解答 –