Я хочу прочитать файл, который находится на удаленном 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 Не удалось получить размер файла.
в /var/www/html/api/listfolder.php в строке 2
Я уверен, что файл существует
Кажется, что для оболочки PHP FTP URL требуется команда FTP SIZE
, что ваш FTP-сервер не поддерживает.
ftp_fget
этого используйте ftp_fget
:
$conn_id = ftp_connect('hostname'); ftp_login($conn_id, 'username', 'password'); $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: Как читать файл .txt с FTP-сервера в переменную?