【问题标题】:mysqldump passthru returncode'smysqldump passthru 返回码的
【发布时间】:2009-04-20 07:51:03
【问题描述】:
我正在尝试通过 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 的值。但我找不到它的含义。我也无法在任何地方找到备份文件。
有什么想法吗?
【问题讨论】:
标签:
php
mysql
mysqldump
passthru
【解决方案1】:
我不确定这是否是问题所在,但看起来您的密码传递参数不正确。
如果你使用 -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[=password], -p[password]
连接到服务器时使用的密码。如果使用短选项形式 (-p),则选项和密码之间不能有空格。如果您在命令行中省略了 --password 或 -p 选项后面的密码值,系统会提示您输入一个。
【解决方案2】:
也可能是您的备份目的地。确保您正在运行 mysqldump 的用户(在您的情况下可能是 www-data 或其他一些 apache 用户)对您尝试写入备份的目录具有写入权限。很多时候我会从命令行尝试一个命令..并看到它工作正常..但我是 root,或者我的用户..不是 www-data。