PHP - ftp_connect() 在列入白名单的服务器上返回 false,该怎么办?

问题描述

我正在为客户端开发一个项目,在该项目中,我必须从生产站点(使用来自 siteground.com 的共享托管计划)连接到外部 FTP 服务器并将生成文件上传到外部服务器使用 PHP

外部 FTP 服务器有一个防火墙,它已将生产站点的服务器 IP 地址和我自己的 IP 地址列入白名单(因此我可以在本地测试连接)。

我可以使用 FileZilla(FTP 客户端)在本地成功连接到外部 FTP 服务器,我也可以像这样使用 PHP 在我自己的本地服务器上成功连接:(只是一个基本示例)

    $host = 'external_ftp_host';
    $user = 'external_ftp_username';
    $password = 'external_ftp_password';

    $ftp_connection = ftp_connect( $host );

    if ( $ftp_connection === false ) {
        die( 'Connecton to hostname has Failed' );
    } else {
        $ftp_login = ftp_login( $ftp_connection,$user,$password );
        // Here comes other code
    }

FTP 似乎成功打开了到主机名的连接,我可以成功登录我的本地服务器。

不幸的是,当我在生产站点上进行相同的连接时,情况并非如此。它在返回 false 的“ftp_connect()”之后立即失败。 "ftp_connect()" 仅返回 FTP 流或错误时返回 false。 "False" 布尔值在确定错误是什么方面并没有多大帮助。

在 Stackoverflow 上的浏览​​向我指出以下几点:

“ftp_connect() 返回 false 主要是由防火墙引起的”

但是服务器 IP 地址已列入白名单,并且由于我自己的 IP 地址也被列入白名单,因此它也可以在我的本地服务器上成功运行,所以这似乎不是防火墙问题,对吗?

站点服务器不接受连接”

我能够连接到此生产站点上的其他服务器,因此该站点能够创建基本的 FTP 连接,并且我能够将文件上传到这些服务器。

我还尝试使用 SSH 在生产站点上打开终端并使用命令

 telnet the_external_ftp_host 21
 
 ftp the_external_ftp_host 21

两者都给我一个“连接超时”错误,但没有别的。

我还能做些什么来找到罪魁祸首吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)