php ftp上传,本地测试可以,上传服务器却失败,ftp_put总是返回false
为了实现网站程序和图片资源分离,决定在网站上传图片的时候,直接通过ftp的形式上传到图片服务器。经过一番折腾后,终于在本地测试成功。高兴的把代码上传Linux服务器后执行却发现上传到ftp服务器的图片都是0kb,很是烦恼。
经过检查发现在调用ftp_put时总是返回false,说明ftp传输文件时出现了错误。猜测是服务器防火墙的问题,于是用命令systemctl stop firewalld 直接关闭了防火墙,然后测试,文件上传成功。
可是关闭防火墙对服务器总不是那么安全。然后用通过查看php文档对ftp上传相关的描述,发现ftp上传是有主动模式和被动模式区分的。默认是用的主动模式,这时我们只需要使用ftp_pasv函数来开启被动模式即可。这样就不用关闭服务器的防火墙了。
其实问题的所在就是客户端的防火墙没有开放ftp主动模式需要的端口,如果真的需要使用主动模式,将客户端和服务端的相关端口打开也是可以的。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。