2011-08-15 26 views
0

我想用PHP系統命令和mysqldump.exe來備份數據庫。我已經指定了mysqldump.exe的絕對路徑,後面跟着各種選項。用php空mysqldump文件

這是我當前如何進行調用 -

$path = "C:\Documents and Settings\User\Desktop\ABCD\mysqldump.exe"; 
$command = $path." <dump options>" > <backup filename> "; 
system($command); 

這產生完全沒有內容的SQL文件。我覺得問題是因爲路徑名稱中的空格,因爲

$path = "C:\ABCD\mysqldump.exe"; 
$command = $path." <dump options>" > <backup filename> "; 
system($command); 

絕對沒問題。

當路徑包含空格時,我無法弄清楚如何讓事情工作。我檢查了其他討論escapeshellarg等的線程,但在路徑上使用它也不起作用。

請幫忙。

回答

1

你真的這麼做嗎?

$system($command); 

應改爲:

// No $ on system() 
system($command); 

另外,儘量使用雙反斜線爲Windows路徑:

$path = "\"C:\\Documents and Settings\\User\\Desktop\\ABCD\\mysqldump.exe\""; 
+0

對不起,那是打錯了。我正在使用系統($命令)。 ,但會使用雙反斜線修復空間問題,因爲如果沒有空格,工作正常。 – Scranton

+1

該路徑還需要在實際命令中用引號括起來。 '「\」C:\\ ...... mysqldump.exe \「」',否則空格將通過嘗試執行'C:\ Documents'來終止命令。 –

+0

好的,謝謝邁克爾和馬克,會嘗試你們倆說的。 – Scranton