为什么PHP ftp_connect在服务器运行时失败?

时间:2014-02-16 03:59:01

标签: php ftp connection-timeout

我一直试图通过FTP连接到我的服务器一段时间,似乎无法让它工作。

$connection_id = ftp_connect("example.com", 22);

运行此代码时,它会挂起一段时间,直到PHP最终告诉我脚本执行时间过长并退出。它不会失败并返回FALSE。它只是超时。

我的第一直觉是服务器可能已经关闭,所以我把它搞定了。 ping成功了,我没有丢失任何数据包。然后我尝试使用相同的参数与Filezilla连接,并且能够连接。我也可以通过SSH连接到服务器。我甚至尝试延长PHP允许脚本的执行时间,但它总是挂起并超时。

那么让我感到困惑的是,如果连接到服务器的所有这些方法都有效,那为什么ftp_connect()函数不起作用?

澄清:

有些人想知道为什么我使用端口22(SSH端口)进行连接。我首先尝试了FTP(端口21)的默认端口,但ftp_connect()函数立即返回FALSE,根据PHP手册,这意味着有一些错误。

我也无法通过端口21与FileZilla连接。所以我决定使用SFTP端口,即端口22.在FileZilla中成功连接。

3 个答案:

答案 0 :(得分:1)

第三个参数被添加到名为timeout的函数中。尝试类似:

$conn = ftp_connect('site', 22, 360);

答案 1 :(得分:1)

ftp_connect不能用于连接SFTP服务器。查看ssh2_sftp,它使用与标准FTP不同的方法。

答案 2 :(得分:-1)

可能是您可以尝试使用“IP”地址而不是整个字符串。