0

我正在尝试通过 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 的值。但我找不到它的含义。我也无法在任何地方找到备份文件。

有任何想法吗?

4

2 回答 2

2

我不确定这是否是问题,但看起来您的密码传递参数不正确。

如果你使用 -p 你需要在它旁边有密码,没有空格,像这样:

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname  | gzip > $backupFile";

或使用长 --password=$dbpass。

例如:

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname  | gzip > $backupFile";

从 mysqldump 手册页:

--password[=密码], -p[密码]

连接到服务器时使用的密码。如果使用短选项形式 (-p),则选项和密码之间不能有空格。如果您在命令行中省略了 --password 或 -p 选项后面的密码值,系统会提示您输入密码值。

于 2009-04-20T08:02:22.070 回答
0

也可能是您的备份目的地。确保您正在运行 mysqldump 的用户(在您的情况下可能是 www-data 或其他一些 apache 用户)对您尝试写入备份的目录具有写入权限。很多时候我会从命令行尝试一个命令..并看到它工作正常..但我是root,或者我的用户..不是www-data。

于 2009-11-10T19:35:20.577 回答