在PHP中获取ftp_get()的警告

时间:2010-10-28 17:20:38

标签: php ftp

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

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

有人可以给出一些错误的线索。这是在我以前的托管/服务器上工作,因为我把它移动了它。是否有一些特定的PHP配置。我检查了phpinfo并启用了FTP支持。 连接获得资源ID,用户名,密码和ftp主机通过CuteFTP工作。

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 个答案:

答案 0 :(得分:5)

老实说,这听起来像是一个FTP问题,而不是PHP问题,因为“无法打开数据连接”是一个FTP错误425,这是一个FTP协议级错误。 FTP服务器可能会导致很多问题,尤其是配置错误的问题。

如果我猜测,我会说问题在于FTP服务器的配置,可能在主动/被动设置中,但可能在防火墙设置的某个地方。它也可能在你的身上,但这似乎不太可能,因为你仍然可以通过CuteFTP连接。

FTP服务器是远程服务器,还是托管脚本的服务器?如果它们是相同的话,很可能会出现端口冲突。我会与您托管的支持联系,看看他们是否认为这是一个问题。

答案 1 :(得分:1)

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

此目录的权限是什么?