原项目迁移后,同事反馈宝塔的 FTP 无法上传文件。

个人尝试使用 FileZilla 进行连接,结果连接过程中就发生了错误:

服务器回应不可路由的地址。使用服务器地址代替。

或从官网下载的繁体版本提示:
伺服器以無法路由的 IP 位址送出了被動式回應. 改為使用伺服器 IP 位址.

百度前一个博文里都是提到修改 编辑 -> 设置 -> 连接-FTP-被动模式 -> 退回到主动模式(F) ,然后确定。这样做的结果就是又报了另外一个错误:

500 I won't open a connection to 10.6.60.67 (only to 218.4.190.194)

之后多次尝试重连,又报了一个新的错误:

421 Too many connections (10) from this IP

总之,前面的那个编辑修改没有到位。同事 FTP 连接过程中倒是没有出现这个错误,不太清楚是什么原因。

找啊找,终于找到了一个跟我有相同经历的博文了,文中提到 pure-ftp 的配置文件中有一个 PassivePortRange (被动模式端口范围),查看设定为 39000 40000。需要在服务器运行商和宝塔面板安全同时打开这个端口范围。

这里主要是一个范围设置的问题,宝塔面板里,输入 39000:40000 或者 39000-40000 都能够正确的识别,阿里云里面是 39000/40000,端口方形之后,终于 FTP 连上了,远程目录结构也显示了出来。

FTP 上传文件报错问题

这时才到 FTP 上传,尝试上传文件,收到错误提示:

553 Can't open that file: Permission denied

一眼看出是权限问题,但前面打不开那个文件,这个比较让人迷惑。尝试着将目录设置成 web 目录:

chown www.www -R /www/wwwroot/newboy

这里的 www 是 nginx 和 php-fpm 进程的运行用户和用户组。无果,取消勾选网站的防跨站攻击,无果。。。

最后的最后,就是没有办法的办法:修改目录权限为 777:

chmod 777 /www/wwwroot/newboy

一开始先设置 755、775 都没有用,干脆权限放到底,终于可以了。