ftp_get выдает ошибку при извлечении файла

#php #ftp

#php #ftp

Вопрос:

Я пытаюсь извлечь CSV-файл с удаленного сервера с помощью ftp_get

 $conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id, TRUE);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

$okk=0;
// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY))  (line 31)
{
        $okk=1;
}
  

но он выдает следующую ошибку

Предупреждение: ftp_get(): открытие подключения к данным в двоичном режиме для /abc / abc.csv(198528 байт). в /home/a/b/c/cm_data/d.php в строке 31

Я попытался перевести его в режим ascii, тогда тоже выдал ошибку

Предупреждение: ftp_get(): открытие подключения к данным в режиме ASCII для /abc / abc.csv(198528 байт). в /home/a/b/c/cm_data/d.php в строке 31

я также пробовал использовать ftp_pasv($conn_id, TRUE); тоже, но все еще выдает ошибку.

В чем проблема, пожалуйста, помогите!!

Комментарии:

1. Я думаю, что это могут быть проблемы с расположением файла на сервере или правами доступа к файлу. Попробуйте установить права доступа к файлам на 777.

2. здесь нет ошибки разрешения.

Ответ №1:

ftp_pasv необходимо вызывать после ftp_login!

Ответ №2:

Похоже, вы не рассматриваете случаи ошибок из ftp_connect и ftp_login .

Пожалуйста, попробуйте следующий код и посмотрите, выдает ли он какие-либо ошибки:

 <?php

    $ftp_server = $ftp_server;
    $ftp_user = $ftp_user_name;
    $ftp_pass = $ftp_user_pass;

    // set up a connection or die
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

    // try to login
    if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
        echo "Connected as $ftp_user@$ftp_servern";
        if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
            $okk=1;
        }
    } else {
        echo "Couldn't connect as $ftp_usern";
    }

    // close the connection
    ftp_close($conn_id);  

?>
  

Комментарии:

1. Я отредактировал код, потому что я также скопировал (строку 31) — надеюсь, вы не пытались с этим там: D. До строки 31 вы вообще не получаете никаких сообщений — это означает, что ftp_connect и ftp_login оба были успешными?

2. Есть ли у php разрешение на запись в файл $local_file? существует ли файл $server_file? попробуйте записать $local_file в /tmp / — это должно быть доступно для записи любому