【发布时间】:2014-02-16 03:59:00
【问题描述】:
一段时间以来,我一直在尝试通过 FTP 连接到我的服务器,但似乎无法正常工作。
$connection_id = ftp_connect("example.com", 22);
运行此代码时,它会挂起一段时间,直到 PHP 最终告诉我脚本执行时间过长并退出。它不会失败并返回 FALSE。它只是超时。
我的第一直觉是服务器可能已关闭,因此我对其进行了 ping 操作。 ping 成功,我没有丢失任何数据包。然后我尝试使用相同的参数连接Filezilla,它能够连接。我也可以通过 SSH 连接到服务器。我什至尝试延长 PHP 允许脚本的执行时间,但它总是挂起并超时。
所以让我感到困惑的是,如果所有这些连接到服务器的方法都有效,那么为什么 ftp_connect() 函数不起作用?
澄清:
有些人想知道为什么我使用端口 22(SSH 端口)进行连接。我一开始尝试了 FTP 的默认端口(端口 21),但是 ftp_connect() 函数立即返回 FALSE,根据 PHP 手册,这意味着有一些错误。
我也无法通过端口 21 与 FileZilla 连接。所以我决定改用 SFTP 端口,即端口 22。在 FileZilla 中成功连接。
【问题讨论】:
-
FTP 服务器通常在端口 21。端口 22 通常是 SSH。
-
听起来服务器没有运行 FTP 服务器。端口 22 不是 SFTP 端口,而是 SSH。也许您正在考虑通过 SSH 执行文件传输的 SCP。您不能为此使用 FTP 客户端。
标签: php ftp connection-timeout