【问题标题】:Require explicit FTP over TLS with PHP使用 PHP 需要通过 TLS 进行显式 FTP
【发布时间】:2013-10-07 11:40:48
【问题描述】:

我正在尝试使用 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,它不要求显式 TLS。任何想法,将不胜感激。

【问题讨论】:

  • 您是否在服务器上设置了 TLS 证书?
  • 它是共享主机,但它已经安装了 SSL 证书。

标签: php ssl ftp


【解决方案1】:

尝试使用ftp_pasv($ftp, TRUE);。我在 php.net 上的 five year old comment 中找到了这个,它对我有用。

【讨论】:

    【解决方案2】:

    这个也吸引了我。我发现这是我使用的 PHP 版本(5.4.28)的一个错误。我用 PHP 5.6.31 版本尝试了相同的脚本,一切正常。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多