我了解到在Windows下使用PHP的ftps (´ftp_ssl_connect()´)很困难。你需要进行漫长的二进制文件构建来包含Open SSL... 我发现了一个替代品phpseclib的建议(但是让openssl.cnf正确支持对等验证对我来说似乎也很难...)。
然后我看到了这篇文章,它的简单示例和工作中的对等验证(避免中间人攻击)引起了我的注意,使我关注流:
然后我看到了这篇文章,它的简单示例和工作中的对等验证(避免中间人攻击)引起了我的注意,使我关注流:
$uri = 'https://www.bankofamerica.com/';
$ctx = stream_context_create(['ssl' => [
'verify_peer' => true, // important
'cafile' => '/hard/path/to/cacert.pem',
'CN_match' => 'www.bankofamerica.com'
]]);
$html = file_get_contents($uri, FALSE, $ctx); // we are good
然而,这对ftp连接有用吗?我是否也可以使用peer-validated流上下文来打开ftps流?PHP手册中提到,SSL上下文选项同样适用于SFTP,但缺乏进一步的指导。
因此,我猜测:
$ctx = stream_context_create(['ftps' => [
'verify_peer' => true,
'cafile' => 'd:/sandbox/mycerts.pem',
'CN_match' => 'ftp-12345678.mywebhoster.com'
]]);
对吗?错吗?现在选项是用户+密码?然后呢?现在是用户/密码?还是以后?我一无所知...
- 我该如何扫描远程ftp目录内容?
- 我该如何从ftp服务器上传或下载文件?
这些是否都可能?(几行代码会非常有帮助...)或者流只适用于单个文件访问?
更新: Curl可能会做我想要的事情(包括对等验证和目录列表)如此在这个SO答案中所示。将在本周晚些时候检查...
ftp_ssl_connect()
的人们)。 - Frank N