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