2010-10-28 2 views
1

Я пытаюсь получить текстовый файл, используя ftp_get() и когда я выполняю скрипт я получаю предупреждение:Получение предупреждения о ftp_get() в PHP

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

Может кто-нибудь дать некоторые подсказки, что это неправильно. Это работало на моем предыдущем хостинге/сервере, так как я его переделал. Существуют ли определенные конфигурации PHP. Я проверил phpinfo, и поддержка FTP включена. Соединение получило идентификатор ресурса, а имя пользователя, пароль и 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; 
} 

ответ

5

Если честно, это звучит как проблема с FTP, а не проблема с PHP, поскольку «Невозможно открыть соединение для передачи данных» - это ошибка FTP 425, которая является ошибкой уровня протокола FTP. Существует множество проблем, которые может вызвать FTP-сервер, особенно тот, который неправильно сконфигурирован.

Если бы я должен был догадаться, я бы сказал, что проблема заключается в конфигурации FTP-сервера, возможно, в активных/пассивных настройках, но, вероятно, где-то в их настройках брандмауэра. Он также может лежать на вашем, но это кажется маловероятным, поскольку вы все еще можете подключиться через CuteFTP.

Является ли FTP-сервер удаленным сервером или является тем же самым, на котором размещен скрипт? Очень возможно, что могут быть конфликты портов, если они одинаковы. Я бы связался с поддержкой вашего хостинга, посмотрим, признают ли они это как проблему.

1

вполне возможно, что PHP не имеет разрешения на запись в подкаталоге 'lgw '.

Какие у вас разрешения на этот каталог?

+0

разрешение 755 – infinity

Смежные вопросы