如何在php中使用fopen打开ftps路径; 没有收到来自的识别字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (84)

我正在尝试将字符串数据推送到远程ftp路径。我之前在其他设置中已经完成了这个,但在这种情况下,服务器似乎无法识别标识字符串。这可能只是ftp路径字符串上的一个小语法错误,但我看不到它。

我知道我到达了远程服务器,因为我可以检查日志文件并查看消息

Did not receive identification string from xxx.xxx.xxx.xxx

对于我做的每一次尝试。

挂了一段时间后,我的脚本只返回错误

Warning: fopen() failed to open stream.

我的文件路径因此格式化:

$ftp_path = "ftps://user:password@remoteaddress:12345/path/to/file/filename.txt";//port 12345 is deliberate because I use port forwarding on the server to reduce failed hack attempts

处理连接的脚本部分如下:

$ftp_path = "ftps://user:password@remoteaddress:12345/path/to/file/filename.txt";
// Allow/disallow overwriting of existing files on the remote FTP server
$stream_options = array('ftps' => array('overwrite' => false));
// Creates a stream context resource with the defined options
$stream_context = stream_context_create($stream_options);
// Opens the file for writing and truncates it to zero length 
if ($fh = fopen($ftp_path, 'w', 0, $stream_context)){
    // Writes contents to the file
    if(fputs($fh, $content)){
        echo "records pushed successfully.";
    } else {
        echo "The stream was opened, but the records failed to push.";
    }
    // Closes the file handle
    fclose($fh);
} else {
    die('Could not open remote ftp.');
}
提问于
用户回答回答于

此错误可能表示您尝试通过FTP包装器访问SFTP / SSH服务器。FTP / FTPS和SSH / SFTP不兼容协议,因此不要将FTPS与SFTP混淆。

扫码关注云+社区

领取腾讯云代金券