2

あるサーバーから別のサーバーに単純な cURL ファイルをアップロードしようとしています。問題は、cUrl エラー コードからエラー #3 が表示されることです: URL が適切にフォーマットされていませんでした。

URL をブラウザにコピーし、ftp サイトに問題なくログオンしました。また、適切なフォーマットを確認し、Web とこのサイトを検索して回答を探しましたが、成功しませんでした。

コードは次のとおりです。

$ch = curl_init();

$localfile = '/home/httpd/vhosts/homeserver.com/httpdocs/admin.php';  
echo $localfile;  //This reads back to proper path to the file
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://username:password@199.38.215.1xx/');
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);
if ($error_no == 0) {
  $error = 'File uploaded succesfully.';
} else {
  $error  = 'Upload error:'.$error_no ;//Error codes explained here http://curl.haxx.se/libcurl/c/libcurl-errors.html';
}
echo $error;

私もこれを試しました:

curl_setopt($ch, CURLOPT_URL, 'ftp://199.38.215.1xx/');
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');

それでもエラー #3 が発生します。

何か案は?

4

1 に答える 1

0

この例に示すように、リモート URL には宛先ファイルのパスと名前を含める必要があります。

<?php
// FTP upload to a remote site Written by Daniel Stenberg
// original found at http://curl.haxx.se/libcurl/php/examples/ftpupload.html
//
// A simple PHP/CURL FTP upload to a remote site
//

$localfile = "me-and-my-dog.jpg";
$ftpserver = "ftp.mysite.com";
$ftppath   = "/path/to";
$ftpuser   = "myname";
$ftppass   = "mypass";

$remoteurl = "ftp://${ftpuser}:${ftppasswd}@${ftpserver}${ftppath}/${localfile}";

$ch = curl_init();

$fp = fopen($localfile, "rb");

// we upload a JPEG image
curl_setopt($ch, CURLOPT_URL, $remoteurl);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);

// set size of the image, which isn't _mandatory_ but helps libcurl to do
// extra error checking on the upload.
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));

$error = curl_exec($ch);

// check $error here to see if it did fine or not!

curl_close($ch); 
?>
于 2012-06-12T18:13:15.150 に答える