场景还原:我们的一位客户做了一个商城网站,测试阶段结束后,发现数据量比较大,于是客户购买了一台独立的服务器来托管。服务器用了已经有大半年了,之前一切顺利,最近出现FTP软件无法连接服务器,一连接就出现提示:服务器无法识别命令。请使用原始 ftp HELP来识别服务器所支持的所有命令。相关的错误命令是:500 Invalid PORT Command。经过与服务器供应商和机房沟通均未解决,于是求助于我们,在技术员的帮助下,客户服务器最终完美解决了这个问题。
问题关键:500 Invalid PORT Command的中文意思是端口不可用,可能是因为某种原因导致之前的端口号被不明原因的禁用,所以只需要更换端口号就可以解决问题。
解决方法:
1.到服务器的IIS的FTP中修改网站默认的端口号,例如:4722
2.到服务器的防火墙中,添加两个例外端口号,例如:4721、4722
3.开启刚刚添加的这两个端口号,在开始→运行中输入cmd回车,分别输入以下两行代码并执行。
cd c:InetpubAdminScripts
adsutil.vbs set /MSFTPSVC/PassivePortRange "4721-4722"
如果在执行第二条代码时出现this script does not work with wscript等类似错误提示,则需要在前面加cscript.exe,然后重新执行!
this script does not work with wscript
Object required
ErrNumber:424(0x1A8)
to run this script using cscript,type:"CScript.exe adsutil.vbs",
如遇错误不能执行,则请直接使用以下代码替换第二条代码并重新执行。
cscript.exe adsutil.vbs set /MSFTPSVC/PassivePortRange "4721-4722"
设置完成后,重启一下IIS即可。
4.最后在FTP软件中重新设置刚刚重新分配的端口号,数据连接类型建议使用PASV,部分FTP软件中叫做“被动防火墙”设置。
在网上看了一下,还没有发现有比较完整的解决方案,而问题解决过程略显复杂,因此我们特地将这个问题的解决方法整理出来,方便大家也方便我们自己以后参考。