仕事で PHP 使ってるのだけども、ファイルを他のサーバへアップロードしたいのにスクリプトを動かすサーバの PHP は ftpも ssh も扱えなくてちょっと困ってたら cURL だけは使える事が判明したのでやってみたら出来たのでメモ。ぐぐっただけなんですけどね。
参考サイト
PHPでcURLを使ってFTPにアップロードするサンプル:phpspot開発日誌
PHP: PHP の cURL モジュールを使用して example.com のホームページを取得する - Manual
<?php
// アップロード
$ch = curl_init();
$localfile = 'hoge';
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, "ftp://username:password@example.com/$localfile");
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec($ch);
$error_no = curl_errno($ch);
curl_close($ch);
// ダウンロード
$ch = curl_init();
$localfile = 'hoge';
$fp = fopen($localfile, 'w');
curl_setopt($ch, CURLOPT_URL, "ftp://username:password@example.com/$localfile");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
$error_no = curl_errno($ch);
curl_close($ch);
fclose($fp);
curl_errno($ch) で返されるエラーコードは libcurl - Error Codes にある。エラー無ければ0が返って来る。
curl_error($ch) であれば文字列で帰ってくる様だ。(ドキュメント見ただけだが)