我正在尝试在FTP帐户上读取CSV文件,但我用于其他帐户的相同代码不再有效。
这个新的FTP帐户,当我使用FileZilla连接到它时,例如,显示一个关于证书的窗口。我必须同意,因为我可以通过程序正常访问FTP文件。我想这个证书的事情是我的问题的原因。
这是我正在使用的代码:
$filename = "ftp://$user:$pass@$host/filename.csv";
$fh = fopen($filename, "r");
while (!feof($fh)) {
$line = fgets($fh);
var_dump($line);
}
fclose($fh);
有没有办法更改我的代码以考虑涉及证书的此FTP帐户的要求?
答案 0 :(得分:1)
我目前没有要测试的服务器,但允许使用无效证书(我认为这是个问题),在使用流包装器时,您需要创建一个正确的stream context并将其作为传递fopen()的第四个论点。适用的上下文选项为FTP和SSL。您可能希望将verify_peer设置为false
。
$context = stream_context_create([
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
]
]);
$fh = fopen($filename, 'r', false, $context);