代码之家  ›  专栏  ›  技术社区  ›  Alex Rashkov

在php中获取ftp_get()的警告

  •  1
  • Alex Rashkov  · 技术社区  · 14 年前

    我尝试使用ftp_get()检索文本文件 当我执行脚本时,会收到警告:

    ftp_get() [function.ftp-get]: Can't open data connection
    

    有人能告诉我们出了什么问题吗?自从我移动到以前的主机/服务器时,它就坏了。是否有一些特定的PHP配置。我检查了phpinfo并启用了ftp支持。 连接通过cuteftp获得资源ID和用户名、密码和ftp主机。

    function _getFtpFile( $fileName = '' ) {
        if($fileName == '') {
            return false;
        }
    
        $model = $this->getModel();
        $params =& $model->getParams();
    
        $vebraHost = $params->get('vebra_host');
        $vebraUser = $params->get('vebra_username');
        $vebraPass = $params->get('vebra_password');
        $localFile = JPATH_BASE.'/tmp/tmp.csv';
    
        // Delete the file in case it exists
        @unlink($localFile);
    
        // set up basic connection
        $connId = ftp_connect($vebraHost);
    
        // login with username and password
        $loginResult = ftp_login($connId, $vebraUser, $vebraPass);
    
        // turn on passive mode transfers
        ftp_pasv($connId, true);
    
        // try to download $server_file and save to $localFile
        if (!ftp_get($connId, $localFile, $fileName, FTP_BINARY)) {
            $file = false;
        } else {
            $file = $localFile;
        }
    
        // close the connection
        ftp_close($connId);
    
        return $file;
    }
    
    2 回复  |  直到 14 年前
        1
  •  5
  •   shmeeps    14 年前

    老实说,这听起来像是一个ftp问题,而不是php问题,因为“can't open data connection”是一个ftp错误425,这是一个ftp协议级别的错误。FTP服务器可能会导致很多问题,尤其是配置错误的问题。

    如果我猜的话,我会说问题在于ftp服务器的配置,可能在主动/被动设置中,但可能在防火墙设置中。它也可能在你的,但这似乎不大可能,因为你仍然可以通过Cuteftp连接。

    ftp服务器是远程服务器还是脚本所在的服务器?如果端口冲突相同,则很可能会发生。我会联系你的主机的支持,看看他们是否承认这是一个问题。

        2
  •  1
  •   Sudantha    14 年前

    PHP可能没有权限写入 'lgw 子目录。

    这个目录的权限是什么?