private $ftpConnInfo = [
    'host' => '',
    'port' => '21',
    'timeout' => '3',
];

// 根据url获取ip
$urlInfo = parse_url($url);// 解析URL字符串
$this->ftpConnInfo["host"] = gethostbyname($urlInfo["host"]??$url);
if( !preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $this->ftpConnInfo["host"]) ) $this->error("链接格式错误",$urlInfo,203);
    
// 连接FTP
$con = ftp_connect(...array_values($this->ftpConnInfo)) or $this->error("Couldn't connect to $this->ftpConnInfo['host']",null,203);

$user = 'name';// FTP账号
$pwd  = "password)";// FTP密码
    
$login = @ftp_login($con,$user,$pwd);

if(!$login){     
    $this->error("FTP登录失败");
}

// 设置被动模式 才可以进行FTP传输
ftp_set_option($con,FTP_USEPASVADDRESS,true);
ftp_pasv($con,true);

// 设置FTP传输模式为二进制模式
ftp_set_option($con, FTP_BINARY, true);

// 修改权限
ftp_chmod($con,0755,"文件名");

// 创建FTP服务器目录
ftp_mkdir($con,"目录名");

// 下载文件 (连接,本地重命名,线上文件名,类型)
ftp_get($con,"text.txt","server.php",FTP_BINARY);

// 上传文件
$localFile = __DIR__ . "/text.txt";
ftp_put($con,'abc.txt',$localFile,FTP_ASCII);
ftp_size($con, 'server.text');

// 关闭链接
ftp_close($con);