使用 PHP 在 FTP 帐户上打开文本文件
Open text file on a FTP account with PHP
我正在尝试读取 FTP 帐户上的 CSV 文件,但我用于其他帐户的相同代码不再有效。
这个新的 FTP 帐户,例如,当我使用 FileZilla 连接到它时,会显示 window 说明证书的内容。我必须同意,我可以通过程序正常访问 FTP 文件。我想这个证书的东西是我的问题的原因。
这是我正在使用的代码:
$filename = "ftp://$user:$pass@$host/filename.csv";
$fh = fopen($filename, "r");
while (!feof($fh)) {
$line = fgets($fh);
var_dump($line);
}
fclose($fh);
有没有办法更改我的代码以考虑这个涉及证书的 FTP 帐户的要求?
我目前没有要测试的服务器,但要在使用流包装器时允许无效证书(我认为这是问题所在),您需要创建一个适当的 stream context and pass it as fopen()'s 4th argument. The context options that apply are FTP and SSL. You probably want to set 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);
我正在尝试读取 FTP 帐户上的 CSV 文件,但我用于其他帐户的相同代码不再有效。
这个新的 FTP 帐户,例如,当我使用 FileZilla 连接到它时,会显示 window 说明证书的内容。我必须同意,我可以通过程序正常访问 FTP 文件。我想这个证书的东西是我的问题的原因。
这是我正在使用的代码:
$filename = "ftp://$user:$pass@$host/filename.csv";
$fh = fopen($filename, "r");
while (!feof($fh)) {
$line = fgets($fh);
var_dump($line);
}
fclose($fh);
有没有办法更改我的代码以考虑这个涉及证书的 FTP 帐户的要求?
我目前没有要测试的服务器,但要在使用流包装器时允许无效证书(我认为这是问题所在),您需要创建一个适当的 stream context and pass it as fopen()'s 4th argument. The context options that apply are FTP and SSL. You probably want to set 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);