2009-04-20 33 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數據。