php - ftp 上传文件到远程服务器

Posted 让双脚&去腾空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php - ftp 上传文件到远程服务器相关的知识,希望对你有一定的参考价值。

ccentos7服务器 ========================

一、安装vsftpd及ftp命令

yum install vsftpd -y

yum install ftp -y

二、vsftpd服务器的配置文件

  实现在开启防火墙和SELinux情况下,实现匿名用户的登录,可以上传下载,可以创建目录,创建权限掩码为022,可以删除文件,最大上传速度为100kbit/s。

  vsftpd服务器的主要配置文件是/etc/vsftpd/vsftpd.conf。

1.服务器端设置

1.1修改配置文件开放匿名用户上传、下载及其他权限,

anonymous_enable=yes //允许匿名用户登录 

anon_upload_enable=yes   //允许匿名用户上传

write_enable=yes //赋予写权限

anon_mkdir_write_enable=yes   //允许匿名用户新建文件夹

anon_other_write_enable=yes  //匿名用户拥有除了上传和新建目录之外的其他权限

 

然后重启服务

systemctl restart vsftpd.service

1.2修改上传目录的权限

  为了让匿名用户实现上传,必须开放目录的写权限,以anonymous用户名登录后,相当于ftp用户的身份,ftp的登录目录为/var/ftp,开放这个目录的写权限:

chmod 777 /var/ftp,但是再重启服务并在服务器上用ftp登录时会出错,这是因为/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的。解决方法为在/var/ftp下再建一个目录,权限是777就可以了:

mkdir /var/ftp/pub

chmod 777 /var/ftp/pub

 

添加ftp用户名和密码

/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin wolfyftp
passwd wolfyftp  

查看SElinux策略内ftp相关权限

getsebool -a | grep ftp

打开ftp权限,可以代码远程访问

setsebool allow_ftpd_full_access 1

然后重启服务

systemctl restart vsftpd.service

2.测试

ftp:192.168.163.137

浏览器中访问:

 

php===============================

if (is_uploaded_file($_FILES[\'uploadfile\'][\'tmp_name\'])) {
$ftp_server = "192.168.1.105";
$ftp_user_name = "lesley";
$ftp_user_pass = "123456";
$conn_id = ftp_connect($ftp_server) or die("Couldn\'t connect to $ftp_server");
$file = $_FILES[\'uploadfile\'][\'tmp_name\'];
$remote_file = \'/test/\'.$_FILES[\'uploadfile\'][\'name\'];
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo "文件:".$_FILES[\'uploadfile\'][\'name\']."上传成功\\n";
} else {
echo "上传失败\\n";
}
ftp_close($conn_id);
}

对应的前台页面代码:

<form action="uploadfile.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile" id="uploadfile" />
<input type="submit" name="submit" value="submit" />
</form>

运行后确实成功。

 

以上是关于php - ftp 上传文件到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章

将文件发送到远程 FTP 服务器

php恢复ftp上传与curl multi

为啥我的程序没有在远程 ftp 服务器上上传文件?

通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器

如何将http上的文件远程上传到ftp空间里?

华为ftp服务器设置及远程获取文件