簡體   English   中英

使用PHP要求通過TLS的顯式FTP

[英]Require explicit FTP over TLS with PHP

我正在嘗試使用php將文件上傳到ftp。 服務器管理員的唯一要求是加密應為Require explicit FTP over TLS 就是這樣,但是我收到錯誤Warning: ftp_fput() [function.ftp-fput]: Can't open data connection. 我設法連接(處於被動模式),但無法使用任何功能( ftp_putftp_nb_putftp_fput )上傳。 錯誤一直都是一樣的。 我正在嘗試以下代碼:

$host = 'ftps.someserver.net';
$user = '****';
$pass = '****';
$filename = "somefile.txt"


$dest_file = $filename;
$source_file = dirname(__FILE__) . '/' . $filename;

$fp = fopen($source_file, 'r');

$ftp = ftp_ssl_connect($host, 21, 180);


if (ftp_login($ftp,$user,$pass)) {

    var_dump(ftp_pasv($ftp, true)); // gives me true
    // # first way
    // ftp_put($ftp, $dest_file, $source_file, FTP_BINARY);

    // # second
    // $ret = ftp_nb_put($ftp, $dest_file, $source_file, FTP_BINARY, FTP_AUTORESUME);

    // while (FTP_MOREDATA == $ret)
    // {
    //   $ret = ftp_nb_continue($ftp);
    // }

    // # third
    if (ftp_fput($ftp, $dest_file, $fp, FTP_ASCII)) { // I was trying FTP_BINARY and FTP_ASCII.
        echo "Successfully uploaded\n";
    } else {
        echo "There was a problem while uploading\n";
    }       
}
ftp_close($ftp);
fclose($fp);

它與我自己的ftp可以正常工作,該ftp不需要顯式TLS。 任何想法,將不勝感激。

嘗試使用ftp_pasv($ftp, TRUE); 我在php.net上有五年歷史的評論中發現了這一點,並且對我有用。

這也是我的意思。 我發現這是我使用的PHP版本(5.4.28)的錯誤。 我在PHP 5.6.31版中嘗試了相同的腳本,並且一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM