Загрузить файл на FTP через PHP cURL, ошибка, поскольку пароль содержит символ «<» - PullRequest
4 голосов
/ 06 марта 2012

Я использовал отличный код PHP для загрузки файлов на FTP через cURL.До сегодняшнего дня он хорошо мне служил.

Возвращает ошибку скручивания # 3, когда я ее выполняю. Интерпретация ошибки: CURLE_URL_MALFORMAT (3): URL-адрес был неправильно отформатирован.Я подумал, что это потому, что пароль содержит специальные символы.Пароль содержит '<', например, R3lHK2A9 <1 Этот код работает в прошлом, когда все пароли состоят только из букв и цифр. </p>

Я пытался использовать escapeshellarg(), urlencode() и escapeshellcmd() дляпароль .... напрасно.Я что-то упустил?

Можете ли вы, ребята, помочь, пожалуйста?

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

    curl_setopt($ch, CURLOPT_URL, ‘ftp://username:password@ftp.domain.com/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;
    ?>

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

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

Например,

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);
1 голос
/ 06 марта 2012

Вы можете попытаться установить логин / пароль, используя опцию CURLOPT_USERPWD:

curl_setopt(CURLOPT_USERPWD, '[username]:[password]') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...