MySQL:mysqldump生成数据库备份

时间:2014-06-19 14:23:39

标签: php mysql mysqldump

我编写了以下代码片段生成mysql数据库转储并将其保存在服务器上

public function save_db_backup()
{
    $DBUSER=$this->db->username;
    $DBPASSWD=$this->db->password;
    $DATABASE=$this->db->database;

    $filename = $DATABASE . "-" . date("Y-m-d_H-i-s") . ".sql.gz";

    $save_path = $_SERVER['DOCUMENT_ROOT'] . '/application/assets/db_backups/' . $filename;

    $cmd = "mysqldump -u $DBUSER --password=$DBPASSWD $DATABASE | gzip --best > " . $save_path;

    exec( $cmd );
}

在我的其他服务器上正常运行。但是在将我的站点移动到这个新服务器之后,它突然停止工作,即数据库备份文件没有保存在指定的路径中。此外,我已在服务器上检查exec 已启用,并且目录可读且可写

 is_readable($_SERVER['DOCUMENT_ROOT'] . '/application/assets/db_backups/') // true
 is_writable($_SERVER['DOCUMENT_ROOT'] . '/application/assets/db_backups/') // true

我已经检查过,数据库凭据没问题。我尝试了mysqldump的路径,但也没有用:

$cmd = "/usr/bin/mysqldump -u $DBUSER --password=$DBPASSWD $DATABASE | gzip --best > " . $save_path;

可能会出现什么问题?

1 个答案:

答案 0 :(得分:0)

您应该检查用户启动命令的内容,然后检查dir是否可读且THAT用户是否可写。 如果您是从PHP脚本启动它,那可能是原因。