2012-03-06 2 views
4

Я использую кусочек отличного PHP-кода для загрузки файлов на FTP через cURL. Это хорошо послужило мне до сегодняшнего дня.Загрузите файл на FTP с помощью PHP cURL, ошибка, потому что пароль содержит символ «<»

Он возвращает ошибку скручивания # 3 при его выполнении Intepretation of error: 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

Попробуйте использовать опцию CURLOPT_USERPWD установить учетные AUTH, вместо того, переходя затем в URL.

E.g.

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

Кроме того (из here) вы можете попробовать процентов, кодирующие аутентификации учетные данные:

$username = 'username'; 
$password = 'pass<word'; 
curl_setopt($ch, CURLOPT_URL, 'ftp://'.rawurlencode($username).':'.rawurlencode($password).'@ftp.domain.com/public_html/filesfromscript/'.$localfile); 
Смежные вопросы