在fopen中使用FTP URL时,获取“FTP服务器报告550无法获取文件大小。”

问题描述 投票:0回答:1

我想读取远程ftp服务器上的变量文件。我试着用地址阅读

fopen("ftp://user:pass@localhost/filetoread");

$contents = file_get_contents('ftp://ftpuser:123456789@localhost/file.conf');
echo $contents;

也没有用。我也试图直接发送GET请求到URL,这也是行不通的。如何在不下载的情况下阅读FTP文件?

我检查了php警告说:

PHP警告:file_get_contents(ftp://...@localhost/file.conf):无法打开流:FTP服务器报告550无法获取文件大小。 在第2行的/var/www/html/api/listfolder.php中

我确定该文件存在

php ftp
1个回答
1
投票

PHP FTP URL wrapper似乎需要FTP SIZE命令,你的FTP服务器不支持。

请改用ftp_fget

$conn_id = ftp_connect('hostname');

ftp_login($conn_id, 'username', 'password');
ftp_pasv($conn_id, true);

$h = fopen('php://temp', 'r+');

ftp_fget($conn_id, $h, '/path/to/file', FTP_BINARY, 0);

$fstats = fstat($h);
fseek($h, 0);
$contents = fread($h, $fstats['size']); 

fclose($h);
ftp_close($conn_id);

(添加错误处理)

PHP: How do I read a .txt file from FTP server into a variable?

© www.soinside.com 2019 - 2024. All rights reserved.