我正在尝试通过php进行mysql转储。
这是代码
$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz';
//Command nog aanpassen....
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
//$status = system($command);
echo $backupFile ."<br>";
$status = passthru($command, $a);
echo "output:" . $a;
$ a = 2的价值但是我找不到它的含义。我也无法在任何地方找到备份文件。
有什么想法吗?
答案 0 :(得分:2)
我不确定这是否是问题,但看起来您的密码传递参数不正确。
如果你使用-p,你需要在它旁边有密码,没有空格,如下所示:
$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip > $backupFile";
或者使用long --password = $ dbpass。
例如:
$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname | gzip > $backupFile";
来自mysqldump手册页:
- 密码[=密码], - p [密码]
连接服务器时使用的密码。如果使用短选项表单(-p),则选项和密码之间不能有空格。如果在命令行上省略--password或-p选项后面的密码值,则会提示您输入密码值。
答案 1 :(得分:0)
也可以作为备份的目的地。确保您正在运行mysqldump的用户(在您的情况下可能是www-data或其他一些apache用户)对您尝试编写备份的目录具有写入权限。很多时候我会从命令行尝试命令..并且看它工作正常..但我是root用户,或者我的用户..而不是www-data。