我编写了以下代码片段生成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;
可能会出现什么问题?
答案 0 :(得分:0)
您应该检查用户启动命令的内容,然后检查dir是否可读且THAT用户是否可写。 如果您是从PHP脚本启动它,那可能是原因。