2013-03-10 40 views
1

我正在使用生成零長度文件的myqldump。我嘗試了很多次,但似乎只輸出一個零長度的文件。我不知道爲什麼。我需要安裝什麼或什麼?mysqldump生成零長度文件

<? 
    shell_exec("mysqldump -hlocalhost -uroot -p -A> db/ilamdb.sql "); 
    echo "complete"; 
    ?> 
+0

什麼是變量'$ _db_database'?你的變量是'$ _db',還是'$ _db_database'? – 2013-03-10 02:44:34

+0

您應該將輸出捕獲爲'$ out = shell_exec()'並檢查它。 – 2013-03-10 02:45:16

+0

它只是一個變量,我打電話給我的數據庫 – user2004096 2013-03-10 02:46:14

回答

1
  1. 提供一個完整路徑mysqldump的
  2. 提供(在你的情況根),用於用戶的密碼。 離開-p表示以交互方式詢問用戶密碼。如果包含以下字符之一,請將其轉義或放在引號中* ? [ < > & ; ! | $
  3. 對於使用--no-defaults選項的好措施。你可能不需要這個。
  4. 最後,將stderr重定向到stdout,並在命令末尾添加2>&1。這樣,如果發生錯誤,您將在文件中獲取用於調試目的的錯誤消息,而不僅僅是空文件。

因此你的代碼來調用mysqldump可能看起來像這樣

$pwd = '*******'; 
$cmd = "/usr/local/mysql/bin/mysqldump -hlocalhost -uroot -p'$pwd' -A> db/ilamdb.sql 2>&1"; 
shell_exec($cmd); 
+0

@ user2004096有幫助嗎? – peterm 2013-03-11 03:10:38