2012-01-21 71 views
0

我有這樣的代碼:mysqldump的不工作:(

function export() 
{ 
    $exp = system("mysqldump -uguku -pjustbe repadmin > back-up.sql"); 
    if($exp) {echo 'ok';} 
    else { echo 'err';} 
} 

但它不工作,它所做的,就是要打造「背up.sql」的文件,但它是空白。 我也得到了「錯誤」的消息。

+1

首先你應該看看是否運行:mysqldump -uroot -p repadmin在控制檯上工作。你做的mysql_connect,mysql_select_db與system()調用無關。 2種不同的東西。 – spotman

+0

它從控制檯工作得很好,它不從php腳本 :(,這是在控制檯上工作的線路: 「mysqldump -uguku -pjustbe repadmin> back-up.sql」,並在「 bin「文件夾中創建一個帶有這個名字的文件,它可以工作,當我在PHP頁面上運行這個腳本時,會創建」back-up.sql「文件,但是它裏面沒有代碼 –

+0

'-p'會提示除非你給它一個值,否則你目前沒有給你的代碼賦值。 –

回答

1

嘗試使用完整的路徑mysqldump的...

$exp = system("/full/path/mysqldump -uroot -p repadmin > back-up.sql");

which mysqldump會告訴你的路徑應該是什麼。

+0

無論如何,我輸入完整的路徑,簡單或括號...在PHP中它不工作,在控制檯是,完美的,但在腳本上,沒有:( –

1

這裏有一個命令運行不正常。最好的辦法是捕獲stderr(錯誤消息去哪裏)並查看輸出結果。另外需要注意的是環境變量將會不同 - 比如PATH(由上面的@Joshua_Martell引用)。

使用此命令捕獲標準錯誤,看看是什麼錯誤信息正在製作:

/usr/bin/mysqldump -uguku -pjustbe repadmin > back-up.sql 2> mysqldump.err 

這也採用了全路徑mysqldump(使用正確的道路)。你也可能應該添加一個路徑到back-up.sql,在這種情況下,到mysqldump.err - 不要以爲PHP會運行在你想要的目錄中,因爲它可以可能更改。