使用PHP在FTP帐户上打开文本文件

时间:2018-06-08 16:55:06

标签: php csv ftp fopen

我正在尝试在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帐户的要求?

1 个答案:

答案 0 :(得分:1)

我目前没有要测试的服务器,但允许使用无效证书(我认为这是个问题),在使用流包装器时,您需要创建一个正确的stream context并将其作为传递fopen()的第四个论点。适用的上下文选项为FTPSSL。您可能希望将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);