2016-01-14 122 views
1

我嘗試備份我的數據庫。我有以下代碼:mysqldump錯誤的命令執行

<?php 
    $command = 'mysqldump --user=root --host=localhost opencart_status > backup.sql'; 
    $result = passthru($command); 
    if(!$result){ 
     echo "Error!"; 
    } 
    else{ 
     echo "OK"; 
    } 
?> 

我沒有密碼連接到服務器與數據庫。我需要備份的數據庫被稱爲opencart_status

輸出basckup.sql被創建,但具有0 B尺寸並且爲空。我在屏幕上看到的輸出是錯誤!我也嘗試了exec()函數。但是結果相同。

謝謝您的建議。

+0

你在屏幕上看到了什麼錯誤? – Bfcm

+0

@Bfcm只有'echo「錯誤!」'因爲'$ result = passthru($ command);'是錯誤的。 –

回答

0

問題可能出現在端口或您使用的命令中。試試下面的代碼:

所有的
<?php 
    $command = 'mysqldump --host=localhost:3306 --user=root opencart_status > backup.sql'; 
    system($command); 
?> 
+0

我試圖編輯本地主機,並添加:80端口,但同樣錯誤。 –

+0

你試過3306嗎? – Bfcm

+0

是的,但結果相同。除了我的設置是_Apache/2.4.16(Win32)OpenSSL/1.0.1p PHP/5.6.12服務器在127.0.0.1端口80_ –

0

首先,如果你看看passthru文檔,你應該看到passthru沒有返回關於執行狀態的任何值。如果你需要一個返回值來檢查,你應該增加其在文檔中定義爲$return_var第二個參數: http://php.net/manual/en/function.passthru.php

最有可能的,你應該檢查值而不是函數的返回值開始。

之後我會建議您嘗試從命令行運行mysqldump命令。您應該能夠在控制檯中調試mysqldump問題,然後將其移至php執行。

+0

謝謝你的建議。我有一個也許愚蠢的問題。你寫了關於命令行。你認爲Windows命令行還是什麼命令行? –

+0

是的,請嘗試Windows命令行上的命令並查看正在輸出的內容。你甚至可以開始沒有輸出重定向到文件:'mysqldump --user = root --host = localhost opencart_status' – Ingus

+0

我得到了這個答案:_'mysqldump'不被識別爲內部或外部命令,可操作程序或批處理文件._ –