尝试 SSL 连接时 PHP 的 FTP 功能

标签 php

我已经建立了所有可能的连接来验证 FTP 服务器是否正常工作,甚至可以使用 file_put_contents() 上传文件,但在尝试 SSL 连接时,PHP 的 FTP 功能对我不起作用。服务器配置为不允许非 SSL 连接,因此没有后备方案。没关系,一切仍然有效,但我真的想使用 ftp_ssl_connect() 和 ftp_login() 来工作!

请参阅此示例:

<?php

$username    = 'someuser';
$password    = 'SeCrEtPassWd';
$hostname    = '192.168.1.10';
$filename      = 'whatever.txt';
$string_data  = 'This is the text content of the file. Pretty fancy eh?';


// USE file_put_contents W/ stream_context_create - WORKS !!!!
$url = 'ftps://' . $username . ':' . $password . '@' . $hostname . '/';
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create( $opts );
file_put_contents( $url . $filename, $string_data, 0, $context );

//有效代码结束 --------------------------------------------------

// USE PHP's FTP functions - DOES NOT WORK !!!
$conn_id = @ftp_ssl_connect( $hostname );
$login_result = ftp_login( $conn_id, $username, $password );
ftp_put( $conn_id, $filename, $filename, FTP_ASCII );
ftp_close( $conn_id );

//无效代码结束 ------------------------------

/*
****ERRORS PERTAINING TO THE PROBLEM ----------------------------****

Warning: ftp_login() [function.ftp-login]: SSL/TLS handshake failed in C:\xampp\htdocs\script-library\ftps.php on line 20
Warning: ftp_login() [function.ftp-login]: Proceed with negotiation. in C:\xampp\htdocs\script-library\ftps.php on line 20
*/

这是 PHP 中的错误吗?我只是不明白为什么其他一切都有效,但 PHP FTP 功能却不起作用。我的问题是我确实需要能够列出远程服务器上的文件,因为我不想覆盖它们。我想将该文件重命名为不存在的名称。

最佳答案

您可以使用 phpseclib 来执行此操作,它非常适合我: http://phpseclib.sourceforge.net/

关于尝试 SSL 连接时 PHP 的 FTP 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914445/

相关文章:

java - php - 在数据库中存储发布的 JSON 对象

php - 在 MySQL 中更改表会影响 php 页面吗?

php - 哪个是最好的 array_search 或 in_array?

php - 在 android 应用程序和 php 服务器中使用 http get/post 请求时出现文本编码错误?

php - 我如何通过另一个相关表 Yii CDbCriteria 过滤查询?

php - 将特殊字符从 php 传递到 javascript

php - 无法连接到数据库

php - 通过套接字从 iPhone 客户端连接到 PHP 服务器

php - 从sql语句创建多个CSV文件

php图片上传和命名失败