php - MySQL:mysqldump 生成数据库备份

标签 php mysql

我编写了以下代码片段,生成 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;

可能存在什么问题?

最佳答案

您应该检查哪个用户启动了该命令,然后检查该目录是否可由该用户读取和写入。 如果您从 PHP 脚本启动它,这就是可能的原因。

关于php - MySQL:mysqldump 生成数据库备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24308960/

相关文章:

php - 我正在尝试使用 PHP 连接到 mysql 数据库,但它不起作用

php - 更新查询,如何从其他表获取列名

php - 加入多个表(以下/事件)

mysql - 如何通过mysql中的单个过程更新两个不同数据库中存在的两个不同表的记录?

mysql - 使用多个唯一标识符进行不同 SQL 计数

php - 在数组中没有按预期工作

php - 如何根据元值查看帖子是否存在

php - SQLSTATE[HY000] [1045] 拒绝用户 'root' @'localhost' 的访问(使用密码 : YES) symfony2

mysql - REPLACE 总是创建一个新行而不是替换

php - SQL 查询 INNER JOIN - 意外结果