2012-03-06 7 views
4

私はcURLを使ってFTPにファイルをアップロードする際に素晴らしいPHPコードを使用しています。 今日まで私はうまくやってきました。PHPのcURL経由でFTPにファイルをアップロードしました。パスワードに '<'文字が含まれているため、エラーが発生しました。

実行時にカールエラー#3を返します エラーの解釈:CURLE_URL_MALFORMAT(3):URLの形式が正しくありませんでした。 パスワードに特殊文字が含まれていたためと考えました。 パスワードには「<」 が含まれています。 R3lHK2A9 このコードは、パスワードがすべて文字と数字のみで構成されていた過去の作品です。

私は、パスワードに.... escapeshellarg(),urlencode()escapeshellcmd()を使ってみました。何か不足していますか?

お元気ですか?

<?php 
    $ch = curl_init(); 
    $localfile = “test.tar”; 
    $fp = fopen($localfile, ‘r’); 

    curl_setopt($ch, CURLOPT_URL, ‘ftp://username:[email protected]/public_html/filesfromscript/’.$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); 

    if ($error_no == 0) { 
    $message = ‘File uploaded successfully.’; 
    } else { 
    $message = “File upload error: $error_no. Error codes explained here http://curl.haxx.se/libcurl/c/libcurl-errors.html”; 
    } 
    echo $message; 
    ?> 

答えて

1

あなたはCURLOPT_USERPWDオプションを使用してログイン/パスを設定しようとすることができます。

curl_setopt(CURLOPT_USERPWD, '[username]:[password]') 
6

代わりに、URLに続い渡すので、認証資格情報を設定するCURLOPT_USERPWDオプションを使用してみてください。

など。 (hereから取られた)また

curl_setopt($ch, CURLOPT_URL, 'ftp://ftp.domain.com/public_html/filesfromscript/'.$localfile); 
curl_setopt($ch, CURLOPT_USERPWD, 'username:pass<word'); 

あなたはパーセントエンコーディング認証資格情報を試みることができる:

$username = 'username'; 
$password = 'pass<word'; 
curl_setopt($ch, CURLOPT_URL, 'ftp://'.rawurlencode($username).':'.rawurlencode($password).'@ftp.domain.com/public_html/filesfromscript/'.$localfile); 
関連する問題