我了解到在PHP for Windows下使用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
Run Code Online (Sandbox Code Playgroud)
但是,这对ftp连接有用吗?我还可以使用经过对等验证的流上下文来打开ftps流吗? php手册提示,ssl上下文选项也适用于sftp,但缺乏进一步的指导.
所以我疯狂地猜测:
$ctx = stream_context_create(['ftps' => [
'verify_peer' => true,
'cafile' => 'd:/sandbox/mycerts.pem',
'CN_match' => 'ftp-12345678.mywebhoster.com'
]]);
Run Code Online (Sandbox Code Playgroud)
对?错误?用户+密码现在作为选项?然后什么?用户/密码呢?还是以后?我无能为力......
这有甚么可能吗?(几行代码将非常有用....)或者流是否仅适用于单一文件访问?
更新:Curl可能会做我想要的(包括对等验证和目录lsiting),如本SO答案所示.本周晚些时候会检查......