2009-04-20 54 views
0

我想通过php做一个mysql转储。mysqldump passthru returncode的

这是代码

$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的价值,但我无法找到这意味着什么。我也无法在任何地方找到备份文件。

任何想法的?

回答

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选项后省略了密码值,系统会提示您输入密码值。

0

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