PHP: Как читать файл .txt с FTP-сервера в переменную?

У меня два сервера. У меня уже есть .txt-файл в том, к которому я подключаюсь.

Мне нужно получить содержимое файла .txt и поместить их в переменную $. Вот мой код, который не работает:

$ftp_server = $_POST["site"]; $path = $_POST["path"]; $ftp_user_name = $_POST["username"]; $ftp_user_pass = $_POST["pass"]; // set up basic connection $conn_id = ftp_connect($ftp_server); // login with username and password $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); ftp_get($conn_id, $content,"/" . $_POST["path"] . "/" . "#" . $result["id"] . " - " . $result["LastName"] . ", " . $result["FirstName"] . "/" . $_POST["title"] . ".txt", FTP_ASCII); 

Этот код подключается к FTP, и я использовал ftp_get для копирования из одного текстового файла в переменную с именем $ content. Я знаю, что переменная не принадлежит этому параметру, но я продаюсь прямо сейчас. Я не знаю, как читать этот .txt-файл.

Есть ли способ сделать это с помощью функций FTP FTP?

благодаря

Теперь, когда я пробую это:

 $fileContents = file_get_contents('ftp://username:pa‌​ssword@hostname/path/to/file'); 

Он дает ошибку 550, говорящую, что .txt-файл не является обычным файлом. Почему я получаю эту ошибку?

еще раз спасибо

Вот официальная ошибка, которую я получаю:

Предупреждение: fopen ( ftp: //…@goldenbooklet.com/101Notebook Backup: 22-08-2013 / # 11 – Cappucci, Ryan / queen.txt) [function.fopen]: не удалось открыть поток: отчеты FTP-сервера 550 / 101Notebook Backup: 22-08-2013 /: не обычный файл в /home/content/34/11614434/html/adminpdo.php в строке 269

Попробуйте это, этот код от http://www.php.net/manual/en/function.fread.php

 <? $filename = "ftp://username:pa‌​ssword@hostname/path/to/file"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); echo $contents; ?> 

Если ошибка, пожалуйста, измените разрешение файла на 777 или 775. Надеюсь, это может помочь.

Если вы уже открыли соединение через ftp_connect, это, вероятно, лучший ответ:

 ob_start(); $result = ftp_get($conn_id, "php://output", $file, FTP_BINARY); $data = ob_get_contents(); ob_end_clean(); 

file_get_contents – это самое простое решение:

 $contents = file_get_contents('ftp://username:pa‌​ssword@hostname/path/to/file'); 

Если это не сработает, возможно, это связано с тем, что в PHP нет обработчиков URL-адресов .


Если вам нужен больший контроль над чтением (режим передачи, пассивный режим, смещение, предел чтения и т. Д.), Используйте ftp_fget с дескриптором ftp_fget php://temp (или php://memory ) :

 $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); 

(добавить обработку ошибок)