#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 / — это должно быть доступно для записи любому