Как мне получить файлы через ftp с помощью php? - PullRequest
2 голосов
/ 30 ноября 2011

У меня есть настройка, где я должен подключить следующее прямо в моем браузере:

ftp://username:p4ssw0rd@ip.ad.dr.ess/Archive/test.txt

Доступ к файлу предоставлен. Однако я не могу получить эти файлы с помощью php, через file_get_contents("$above_url") - я получаю следующую ошибку:

[function.file-get-contents]: не удалось открыть поток: FTP-сервер сообщает 550 /Archive/test.txt: не простой файл.

В конечном итоге я хочу иметь возможность сохранять файлы и в этом месте. Это очевидно, что я делаю не так здесь?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Вместо того, чтобы использовать file_get_contents() и надеяться, что PHP по умолчанию все сделает правильно, я бы посоветовал вам использовать расширение FTP или расширение CURL . Они позволяют намного лучше контролировать все настройки, связанные с доступом по FTP. Особенно если учесть, что вы планируете также записывать данные на FTP-сервер, лучше установить правильный способ работы с FTP.

0 голосов
/ 30 ноября 2011

Попробуйте:

$c = curl_init("ftp://$username:$password@ftp.example.com/$remote");
// $local is the location to store file on local client
$fh = fopen($local, 'w') or die($php_errormsg); 
curl_setopt($c, CURLOPT_FILE, $fh);
curl_exec($c);
curl_close($c);

Вы передаете URL-адрес для использования в curl_init ().Поскольку URL начинается с ftp: //, cURL знает, как использовать протокол FTP.Вместо отдельного вызова для входа на удаленный сервер вы встраиваете имя пользователя и пароль непосредственно в URL.Далее вы устанавливаете место для хранения файла на вашем сервере.Теперь вы открываете файл с именем $ local для записи и передаете дескриптор файла в curl_setopt () в качестве значения для CURLOPT_FILE.Когда cURL передает файл, он автоматически записывает в дескриптор файла.Как только все настроено, вы вызываете curl_exec (), чтобы инициировать транзакцию, и затем curl_close (), чтобы закрыть соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...