Problem z pobraniem zdjęcia po FTP

Tutaj możesz luźno podyskutować o skrypcie phpBB. To forum nie służy do zgłaszania problemów, wykrytych błędów czy pytań odnośnie modyfikacji i stylów.
scooti
Posty: 1
Rejestracja: 07 maja 2018, 22:57
Kontakt:

Problem z pobraniem zdjęcia po FTP

Post autor: scooti » 07 maja 2018, 23:05

Witam serdecznie wszystkich specjalistów PHP.
Zwracam się z prośbą o pomoc, a za razem z pytaniem. Czy coś takiego jest w ogóle możliwe?
Na wstępie opisze o co mi chodzi i czego potrzebuje, aby uniknąć dodatkowych pytań.

Mam trzy kamery, które są administrowane przez zewnętrzną firmę, kamery co minute robią zdjęcie, które zapisywane jest na serwerze właściciela kamer. Chciał bym publikować zdjęcia w formie krótkiego filmiku (przegląd ostatnich 24 godzin) na własnej stronie internetowej. Mechanizm do filmu mam i działa, po wgraniu zdjęć do odpowiednich katalogów, skrypt wykonuje montaż i można obejrzeć w 40 sekund ostatnie 24 godziny pogodę i stan lotniska.

No i tu zaczynają się problemy, nie jestem w stanie pobrać zdjęć z serwera po FTP na własny serwer (Komunikat: Plik nie istnieje).
Otrzymałem zgodę i dostęp do katalogów przez FTP, gdzie zapisywane są zdjęcia.
Moje założenia są takie:
1. Skrypt odpalany jest co 5 minut, przez cron-a i loguje się na serwerze.
2. Po zalogowaniu, sprawdza ostatni zapisany plik.
3. Pobieram go do wskazanego prze zemnie katalogu.
4. Podczas zapisu zmieniam jego nazwę.
Poniżej moje wypociny...
Off Topic
<?php
$ftp = "domena.pl";
$ftp_port = "1111";
$uzytkownik = "login:-)";
$haslo = "haslo:-(";

echo "<p>Laczenie z $ftp</p>";

if ( $polaczenie = ftp_connect( $ftp ) ) {

echo "<p>Polaczono z $ftp</p>";

if ( ftp_login( $polaczenie, $uzytkownik, $haslo ) ) {

$pliki = ftp_nlist( $polaczenie, '/sciezka/katalogu/docelowego/' );
foreach ( $pliki as $plik )
echo "<p>.$plik.</p>";

// otwarcie katalogu ze zdjęciami
$data = date( "Ymd" );
$godz = date( "His" );
$nazwa = 'WspolnaNazwaDlaPliku';
$kam1link = "MojKatalog/" . $nazwa . "_" . $data . "_" . $godz . "M";

if ( $handle = opendir( $polaczenie ) ) {
while ( false !== ( $file = readdir( $handle ) ) ) {
if ( is_file( $polaczenie . '/sciezka/katalogu/docelowego/' . $file ) && ( ( $kiedy = filemtime( $polaczenie . '/sciezka/katalogu/docelowego/' . $file ) ) > $najnowszy ) ) {
$najnowszy = $kiedy;
$najnowszy_nazwa = $file;
}
}
closedir( $handle );
}

// zapisanie i zamiana nazwy pliku na docelowym serwerze
$size = getimagesize( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa );
$fp = fopen( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa, "rb" );

if ( $size && $fp ) {

$contents = file_get_contents( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa );
$fp = fopen( "$kam1link.jpg", 'w' );

fwrite( $fp, $contents );
fclose( $fp );

echo '<p>Plik pobrano</p>';

} else {

echo '<p>Plik nie istnieje</p>';
}
echo '<p>Najnowszy plik to: ' . $najnowszy_nazwa . ', bo z dnia: ' . date( "M-d-Y G:i:s", $najnowszy ) . '</p>';
include '$najnowszy';

} else {
echo "Nie mozna zalogowac uzytkownika $uzytkownik do serwera $ftp";
ftp_close( $polaczenie );
}
} else {
echo "Nie mozna polaczyc się z serwerem $ftp";
}
?>
Skrypty sprawdzałem i działają, ale w odpowiednich warunkach. Połączenie FTP działa i loguje się na serwerze. Jeśli chodzi o pobranie pliku też dział, ale jak chcę pobrać plik z serwera, na którym znajduje się skrypt ( z katalogu a1/ do katalogu b1/).
W momencie kiedy chcę połączyć oba mechanizmy i chcę pobrać plik po FTP (z katalogu domena.pl/sciezka/katalogu/docelowego/ do katakogu MojKatalog/), jest klop :-(.

Ktoś coś Poradzi?

Drobna trudność – a może i nie, serwer, na której jest moja strona posiada interproter PHP5.

ODPOWIEDZ