【问题标题】:PHP ftp_connect() returns false always except with first used ftp server..!PHP ftp_connect() 总是返回 false,除非第一次使用 ftp 服务器..!
【发布时间】:2012-01-20 14:21:10
【问题描述】:

问题是..
我刚刚在我的服务器上第一次使用 ftp_connect()

<?php
$ftp_connect = ftp_connect('ftp.server.com') or die('<b>FTP Connection Error ...</b>');
$login_result = ftp_login($ftp_connect, 'ftp_username','ftp_password') or die('<b>FTP Login Error ...Check Your UserName and Password</b>');
ftp_pasv($ftp_connect,true);    
?>

它工作正常并返回 true。该 ftp 服务器 (ftp.server.com) 一切正常

然后下次我使用同一台服务器时,一切都很好......但是 当我尝试使用另一台服务器(例如:ftp.server2.com)时,它返回错误,即找不到主机..!! 我尝试了我所有朋友的 ftp 服务器,但除了那个(ftp.server.com)之外,没有任何东西可以连接 实际发生了什么...为什么会发生这种情况,我该如何解决...现在我无法连接任何 ftp 服务器(我的 ftp.server.com 除外)...。 提前谢谢...

上面的东西在我的电脑上运行良好(IIS,PHP 5.3.8)

更新: 啊…………找到了问题……但没有找到解决办法。!!!!!! 服务器(此处:ftp.server.com)与托管上述 php 的主机服务器具有相同的 IP - 具有....并且 ftp_connect() 在其上工作.... 原因是服务器 ftp 和 http 主机都来自同一个网络托管服务提供商...

现在很清楚,(我认为)防火墙是所有问题的主要原因......如何修复那个防火墙......?请帮助..再次感谢..

【问题讨论】:

  • 你100%确定下一个服务器是有效的吗?你能从你的 FTP 客户端连接到它吗?
  • 可以用其他工具连接ftp.server2.com吗?
  • 请验证您的服务器是否能够解析服务器名称:gethostbyname() 可以帮助解决此问题。
  • 是的,它可以... !!结果我得到了IP地址..
  • ftp_connect 返回 false 并不意味着 host-not-found 是唯一可能的错误。有主机不可达、连接被拒绝等...先修复你的错误信息。

标签: php ftp firewall


【解决方案1】:

您没有指定端口号。如果您不指定一个,PHP 的ftp_connect() 将使用21 作为默认端口号。该脚本可能适用于第一台服务器,因为它运行在端口 21 上,但其他服务器可能会失败,因为它们运行在不同的端口上。询问您的朋友他们正在使用什么端口,或使用nmap 之类的内容自行查找。

【讨论】:

  • 不是所有的服务器都在端口 21 上运行,我还检查了端口,甚至超时 [ftp_connect(ftp.server2.com,21,150)]...
猜你喜欢
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 2020-12-27
  • 2014-08-26
相关资源
最近更新 更多