У меня два сервера. У меня уже есть .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:password@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:password@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:password@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);
(добавить обработку ошибок)