2015-10-01 89 views
0

我一直在嘗試將JSON編碼的數據發送到我的遠程服務器進行存儲,但是我一直無法使其工作。我希望將JSON數據發送到服務器上的現有文件,並將其附加到文件的末尾。PHP的ftp_fput無法將數據上傳到遠程服務器

這裏是我的工作:

$jsondata = json_encode($record); 

$conn_id = ftp_connect("ftp://MY-USERNAME:[email protected]"); 
$temphandle = fopen('php://temp', 'r+'); 
fwrite($temphandle, $jsondata); 
rewind($temphandle); 

if(ftp_fput($conn_id, 'test.txt', $temphandle, FTP_ASCII)){ 
    echo "Successfully uploaded data"; 
} else { 
    echo "There was a problem while uploading data"; 
}; 

ftp_close($conn_id); 
fclose($temphandle); 

我的if語句必須返回失敗,因爲我得到這個問題的錯誤。我相信我的FTP連接成功。我試圖通過研究很多樣品來把它放在一起,我不確定我的問題在哪裏。我在想我的ftp_fput函數的其中一個參數是不正確的。我非常感謝幫助我們實現這一目標。

感謝

+0

你確定你的ftp連接好嗎?我看不到那個測試。 –

+0

嗨,我只是假設這是一個很好的連接,因爲如果我輸入FTP信息到我的瀏覽器,我可以看到我的目錄沒有問題。我意識到這是不好的假設,我會嘗試和實施測試,以確保連接建立。我只是在學習,謝謝你的評論。 –

+0

如果你不需要使用ftp。你應該使用sftp。您的用戶名和密碼通過純文本發送。此外,如果你正在通過防火牆,還有一些其他的煩惱。 –

回答

0

你並沒有真正爲我們提供了可用於識別問題的任何信息。

無論如何,您正在使用主動FTP模式。由於無處不在的防火牆和NAT,活躍的FTP模式現在幾乎無法運行。一般來說,你應該總是使用被動模式。請致電FTP active and passive modes

在PHP中,您可以通過在ftp_connect(或ftp_login,如果使用它)後調用ftp_pasv切換到被動模式。

$conn_id = ftp_connect("ftp://MY-USERNAME:[email protected]"); 
// turn passive mode on 
ftp_pasv($conn_id, true); 
相關問題