cURL を使用して FTP 経由でファイルをアップロードしようとしていますが、期待どおりに動作しません。
サーバ:
- アパッチ 2.2.25
- PHP 5.3.27
以下の作品:
$url = 'ftp.someserver.com';
$file = '/path/to/file.xml';
$filename = basename($file);
$conn_id = ftp_connect($url);
$login_result = ftp_login($conn_id, $auth['user'], $auth['pass']);
if (ftp_put($conn_id, "/remotedir/$filename", $file, FTP_ASCII)) {
$success = true;
} else {
$success = false;
}
ftp_close($conn_id);
cURL でこれを試すと、FTP エラー 425 で接続がタイムアウトし、リモート サーバーに空白のファイルが残ります。
$url = 'FTP://ftp.someserver.com/remotedir/';
$file = '/path/to/file.xml';
$filename = basename($file);
$fp = fopen($file, 'r');
$fstat = fstat($fp);
curl_setopt($ch, CURLOPT_URL, $url . $filename);
curl_setopt($ch, CURLOPT_USERPWD, rawurlencode($auth['user']) . ':' . rawurlencode($auth['pass']));
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, $fstat['size']);
$result = curl_exec($ch);
fclose($fp);
また、オプションCURLOPT_FTP_USE_EPRT
で接続してCURLOPT_FTP_USE_EPSV
有効にしましたが、同じ結果になりました。
これを cURL で機能させるには何が欠けていますか?