ftp_get nie pobiera lub nie zapisuje wskazanego pliku na lokalnym dysku

0

poniższy skrypt w pliku index.php NIE POWODUJE pobrania wskazanego pliku z serwera lub brak jego zapisu we wskazanej lokalizacji na dysku lokalnym...


<?php


// set up basic connection
$conn_id = ftp_connect($ftp_server);

if($conn_id){// nytec sprawdzam czy poprawnie się udało połączyć z serwerem ftp
    echo "1-conn_id \ngood\n";
} else {
    echo "1-conn_id \nbad\n";
}
//-------------------------------------------1-koniec


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

if($login_result){// nytec sprawdzam czy poprawnie się udało połączyć z serwerem ftp
    echo "2-login_result \ngood\n";
} else {
    echo "2-login_result \nbad\n";
}
//-------------------------------------------2-koniec
$server_file = "/drovega.cba.pl/-ImapX-.txt";
//'server.zip';

//https://stackoverflow.com/questions/29687073/ftp-get-transfer-failed
$res = ftp_size($conn_id, $server_file);

if ($res != -1) {
    echo "3-size of $server_file is $res bytes ";
} else {
    echo "3-couldn't get the size ";
}
//--------------------------------------------3-koniec
// define some variables
$local_file = "C:\aaa\-ImapX-.txt";
//
//https://stackoverflow.com/questions/6430629/ftp-get-fails-but-no-error-reported-by-php
//$local_file = fopen("C:\aaa\PHPObfuscator_demo.zip",'w');
//
// 'local.zip';
//------------------------------

//----------------------------



// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "4-Successfully written to $local_file \n";
} else {
    echo "4-There was a problem \n";
}
//--------------------------------------------4-koniec

//https://stackoverflow.com/questions/29687073/ftp-get-transfer-failed
$res = ftp_size($conn_id, $local_file );

if ($res != -1) {
    echo "5-size of $local_file is $res bytes ";
} else {
    echo "5-couldn't get the size ";
}

//---------------------------------------5-koniec

// close the connection
ftp_close($conn_id);


daje wynik:
1-conn_id good
2-login_result good
3-size of /drovega.cba.pl/-ImapX-.txt is 15 bytes
4-Successfully written to C:\aaa-ImapX-.txt
5-couldn't get the size

co w efekcie oznacza iż nie ma pobranego i zapisanego na lokalnym dysku tego pliku
i potwierdzam widocznym na załączonym obrazku, iż rzeczywiście pliku we wskazanej lokalizacji nie ma
czyli iż nie pobrał go lub nie zapisał ?!

co może być przyczyną ?! proszę o pomoc, jakąś podpowiedź, konstruktywną sugestię...

wielkie dzięki
Ron

0

Rozmiar pliku po ściągnieciu sprawdzalbym inna funkcja. Czy ftp_size na pewno obsługuje pliki lokalne? Sprawdź to, jeśli nie obsługuje to użyj innej funkcji

0

załączony obrazek widać w Eksploratorze Windows, iż rzeczywiście nie ma we wskazanej lokalizacji pliku który miał się tam pojawić...
( bez względu na poprawność użycia przeze mnie tej funkcjonalności w stosunku do lokalizacji na moim dysku komputera... )

0
$res = ftp_size($conn_id, $local_file );

To nie zadziała - podajesz adres pliku lokalnego, a ta funkcja sprawdza wielkość pliku na serwerze FTP a nie lokalnie.

Inna sprawa, plik Ci się nie ściąga bo nie wystarczy podać adresu tak:

$server_file = "/drovega.cba.pl/-ImapX-.txt";

trzeba przejść do katalogu "drovega.cba.pl" przy pomocy fukcji http://php.net/manual/pl/function.ftp-chdir.php a potem pobrać plik -ImapX-.txt.

Zamiast szukać na ślepo odpowiedzi na stacku, lepiej przejrzeć sobie wszystkie funkcje FTP i się pobawić:

http://php.net/manual/pl/book.ftp.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1