Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z ftp_fget
Forum PHP.pl > Forum > Przedszkole
kkpre
Witam, mam mały problem.
Napisałem sobie skrypt do pobierania pliku z innego serwera poprzez funkcje ftp.


  1. <?
  2. include('pobieranie-cfg.php');
  3.  
  4. $plik_lokalny = '../plik.txt';
  5. $uchwyt = fopen($plik_lokalny, 'w');
  6.  
  7. $sciezka ='/home/user/plik.txt';
  8.  
  9. $conn_id = @ftp_connect($host, 23);
  10. $log = ftp_login($conn_id, $user, $haslo);
  11. @ftp_pasv($conn_id, TRUE);
  12.  
  13. if($conn_id) echo "polaczono z serwerem {$host}:23 <br>"; else echo "nie polaczono z serwerem {$host}:23<br>";
  14. if($log) echo "zalogowano<br>"; else echo "nie zalogowano<br>";
  15.  
  16. $pb = ftp_fget($conn_id, $uchwyt, $sciezka, FTP_ASCII, 0);
  17.  
  18. if($pb) echo "pobrano plik {$sciezka}<br>"; else echo "nie pobrano pliku {$sciezka}<br>";
  19.  
  20.  
  21. ftp_close($conn_id);
  22.  
  23. ?>


Problem polega na tym że jak uruchomiłem to na localu (VertigoServ) to normalnie pobrało mi ten plik, a jak wrzuciłem skrypt na mój serwer www to zwraca taki wynik:

Kod
polaczono z serwerem xx.xx.xx.xx:23
zalogowano
nie pobrano pliku /home/user/plik.txt


Ścieżki są oczywiscie prawidłowe - pisałem że skrypt na localu działa.

zmienne $host,$user,$haslo są w tym pliku co includuje pobieranie-cfg.php

Hoster blokuje połączenia z niestandardowymi portami, a ja próbuje się łączyć z portem :23 - ale to też załatwiłem - zreszta widać komunikat że skrypt łączy się z serwerem i się loguje.

Prawa pliku na tym serwerze, z którego próbuje sciągnać też chyba nie mają zbytnio znaczenia bo przecież na localu to działa.

Czy ktoś ma jakiś pomysł co jeszcze może być nie tak?
nospor
Czemu nie sprawdzacie wszystkiego pokolei? Przecież to jest szybsze niż latanie po forach....

$uchwyt = fopen($plik_lokalny, 'w');
sprawdź czy się wykonało poprawnie

Włącz wyswietlanie wszystkich błędów. TU masz napisane jak
Temat: Jak poprawnie zada pytanie
kkpre
Wiesz, zmienia się data modyfikacji pliku więc zakładam że pomyślnie otwiera ten plik. Plik istnieje i po "pobraniu" zapisuje się jako pusty.

  1. var_dump($uchwyt);


zwraca

Kod
resource(3) of type (stream)


a error_reporting zwraca

Kod
Warning: ftp_fget(): php_connect_nonb() failed: Operation now in progress (115) in /home/WWWUSER/domains/DOMENA.PL/public_html/pobieranie.php on line 16
Warning: ftp_fget(): Type set to A in /home/WWWUSER/domains/DOMENA.PL/public_html/pobieranie.php on line 16
nospor
Cytat
Wiesz, zmienia się data modyfikacji pliku więc zakładam że pomyślnie otwiera ten plik
Ty to widziałes ale my nie. A dla mnie to był pierwszy możliwy problem. Na przyszłosć od razu wszystko wyjaśniaj.

1) Spróbuj wywalić pasive mode.
2) Przed ftp_get spróbuj dać: ftp_exec($conn_id, '.')
3) ogólnie poszukaj w necie o tym problemie co ci pluje na ekran bo jest tego troche
kkpre
Temat do zamknięcia. Szkoda mi było czasu na szukanie rozwiązania.
Na localu działało i na innym serwerze www też więc zmieniłem na serwerze z którego pobieram plik z powrotem na 21.
Wina musiała być po stronie hostera. Już działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.