Roy*_*Roy 4 php linux ftp curl
我一直在使用一段漂亮的PHP代码通过cURL将文件上传到FTP.它一直很好,直到今天.
执行时返回卷曲错误#3错误解释:CURLE_URL_MALFORMAT(3):URL格式不正确.我认为这是因为密码包含特殊字符.密码包含'<',例如R3lHK2A9 <1此代码适用于过去密码全部仅由字母和数字组成的密码.
我尝试使用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;
?>
Run Code Online (Sandbox Code Playgroud)
尝试使用该CURLOPT_USERPWD
选项设置身份验证凭据,而不是在URL中传递.
例如
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp.domain.com/public_html/filesfromscript/'.$localfile);
curl_setopt($ch, CURLOPT_USERPWD, 'username:pass<word');
Run Code Online (Sandbox Code Playgroud)
另外(从这里开始)您可以尝试对auth凭证进行百分比编码:
$username = 'username';
$password = 'pass<word';
curl_setopt($ch, CURLOPT_URL, 'ftp://'.rawurlencode($username).':'.rawurlencode($password).'@ftp.domain.com/public_html/filesfromscript/'.$localfile);
Run Code Online (Sandbox Code Playgroud)