Curlとphpを使用してFTPサーバーからファイルをダウンロードしようとしていますが、役立つドキュメントが見つかりません
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"ftp://$_FTP[server]");
curl_setopt($curl, CURLOPT_FTPLISTONLY, 1);
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($curl);
私はファイルのリストを得ることができますが、それはそれについてです
私の推測では、あなたのURLはファイルではなくディレクトリを指していると思います。 CURLOPT_URLにファイルの完全なURLをフィードする必要があります。また、ファイルをダウンロードする場合は、どこかに保存することをお勧めします。
作業例:
$curl = curl_init();
$file = fopen("ls-lR.gz", 'w');
curl_setopt($curl, CURLOPT_URL, "ftp://ftp.sunet.se/ls-lR.gz"); #input
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $file); #output
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]");
curl_exec($curl);
curl_close($curl);
fclose($file);
コミュニティの反応はわずかな調整で機能します:
CURLOPT_FILEがCURLOPT_RETURNTRANSFERの設定に依存しているためと思われ、CURLOPT_RETURNTRANSFERを設定する前にCURLOPT_FILEを設定しても機能しないようです。
このページでのjoeterranovaのコメントを引用: http://php.net/manual/fr/function.curl-setopt.php
Curl_execの前に次の行を追加します。
$file = fopen("filename_to_save_to", "w");
curl_setopt($curl, CURLOPT_FILE, $file);
FTP経由で接続する方法を含むCURLヘルプをここで参照してください http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library
注:HTTPからファイルにアクセスできる場合は、リンクEG: http://Host.com/file.txt を使用し、file_get_contentsまたはファイル関数を使用することをお勧めします。
次に http://uk.php.net/file_get_contents またはその他の方法を使用して、ファイルをコンピューターにダウンロードできます。このオプションは、ダウンロードにFTPを使用するよりも優れています。上記のリンクにあるように、FTPを使用していつでもアップロードできます。
$ftp_location = put your ftp adress here;
$location_login = put your login here;
$location_pwd = put your password here;
$conn_id = ftp_connect("$ftp_location");
$login_result = ftp_login($conn_id, $location_login, $location_pwd);
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
exit;
} else {
echo "Connected";
}
// get the file
// change products.csv to the file you want
$local = fopen("products.csv","w");
$result = ftp_fget($conn_id, $local,"products.csv", FTP_BINARY);
fwrite($local, $result); fclose($local);
// check upload status
if (!$result) {
echo "FTP download has failed!";
} else {
echo "Downloaded ";
}
// close the FTP stream
ftp_close($conn_id);
これらの答えをすべて試し、どれも機能しないようにした後、これが最終的に機能するようになりました。
$curl = curl_init();
$fh = fopen("FILENAME.txt", 'w');
curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo['username']}:{$servererInfo['password']}@{$serverInfo['server']}/{$serverInfo['file']}");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
fwrite($fh, $result);
fclose($fh);
curl_close($curl);