我有這樣的代碼:mysqldump的不工作:(
function export()
{
$exp = system("mysqldump -uguku -pjustbe repadmin > back-up.sql");
if($exp) {echo 'ok';}
else { echo 'err';}
}
但它不工作,它所做的,就是要打造「背up.sql」的文件,但它是空白。 我也得到了「錯誤」的消息。
我有這樣的代碼:mysqldump的不工作:(
function export()
{
$exp = system("mysqldump -uguku -pjustbe repadmin > back-up.sql");
if($exp) {echo 'ok';}
else { echo 'err';}
}
但它不工作,它所做的,就是要打造「背up.sql」的文件,但它是空白。 我也得到了「錯誤」的消息。
嘗試使用完整的路徑mysqldump的...
$exp = system("/full/path/mysqldump -uroot -p repadmin > back-up.sql");
which mysqldump
會告訴你的路徑應該是什麼。
無論如何,我輸入完整的路徑,簡單或括號...在PHP中它不工作,在控制檯是,完美的,但在腳本上,沒有:( –
這裏有一個命令運行不正常。最好的辦法是捕獲stderr(錯誤消息去哪裏)並查看輸出結果。另外需要注意的是環境變量將會不同 - 比如PATH(由上面的@Joshua_Martell引用)。
使用此命令捕獲標準錯誤,看看是什麼錯誤信息正在製作:
/usr/bin/mysqldump -uguku -pjustbe repadmin > back-up.sql 2> mysqldump.err
這也採用了全路徑mysqldump
(使用正確的道路)。你也可能應該添加一個路徑到back-up.sql
,在這種情況下,到mysqldump.err
- 不要以爲PHP會運行在你想要的目錄中,因爲它可以可能更改。
首先你應該看看是否運行:mysqldump -uroot -p repadmin在控制檯上工作。你做的mysql_connect,mysql_select_db與system()調用無關。 2種不同的東西。 – spotman
它從控制檯工作得很好,它不從php腳本 :(,這是在控制檯上工作的線路: 「mysqldump -uguku -pjustbe repadmin> back-up.sql」,並在「 bin「文件夾中創建一個帶有這個名字的文件,它可以工作,當我在PHP頁面上運行這個腳本時,會創建」back-up.sql「文件,但是它裏面沒有代碼 –
'-p'會提示除非你給它一個值,否則你目前沒有給你的代碼賦值。 –