Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przenoszenie pliku między serwerami
Forum PHP.pl > Forum > PHP
batman
  1. <?php
  2. $pointer = fopen('../../upload/'.$file, 'wb'); // plik lokalny 
  3. $fp = fopen($path, 'rb'); // plik zdalny - np <a href=\"http://www.jakisadres.pl/plik.doc\" target=\"_blank\">http://www.jakisadres.pl/plik.doc</a>
  4. while(!feof($fp)) {
  5. $data = fread($fp, 4096); // zmienialem wartosc 4096 na inne (duze i male) - bez efektu
  6. fwrite($pointer, $data);
  7. }
  8. fclose($fp);
  9. fclose($pointer);
  10. ?>

To jest kod odpowiedzialny za skopiowanie pliku z jednego serwera na drugi. Wiem, że można to zrobić znacznie lepiej (chociażby wget), ale ja nie mam innej możliwości.
Problemem jest to, że na jednym serwerze to działa, a na innym nie. Plik ściągnięty tą metodą ma zawsze ~50 kb (51 200 bajtów). Wiecie co może być tego przyczyną? Plik to dokument worda.
pyro
Zaglądałeś do php.ini?
batman
Cytat
Zaglądałeś do php.ini?

Nawet nie wiem czego mam szukać.
dr_bonzo
file_get_contents() pobierze ci caly plik?
batman
Właśnie w tym problem, że nie mam jak tego sprawdzić. Z tego co udało mi się ustalić to:
1. Plik uploadowany na serwer ma poprawną wielkość i jest odczytywalny.
2. Po zapisaniu pliku na innym serwerze jest on już obcięty. Używałem file, file_get_contents, copy i fopen.
Spróbuję jeszcze jakość znaleźć odpowiedź na pytanie, czy plik jest obcinany podczas ściągania, czy podczas zapisywania.
kwiateusz
a przez ftp probowales sie polaczyc z 2gim serwerem?
dr_bonzo
Po zapisaniu jest obciety.. a daj strlen( file_get_contents( $plik_z_pierwszego_servera ) ); // to bedziesz wiedzial czy sciagnal sie caly; bez jego zapisywania
batman
Właśnie sprawdziłem i okazało się, że obcina przy pobieraniu pliku.


edit
Cytat
a przez ftp probowales sie polaczyc z 2gim serwerem?

To jest bardzo stary serwer, gdzie jeszcze php4 jest i bardzo mało rozszerzeń. Jedyne co mogę użyć, to właśnie fopen, file, file_get_contents, copy.
kwiateusz
manual twierdzi ze jest ftp_connect w 4ce smile.gif a moze admina zapytaj czy nie ma jakis limitow na pobieranie plikow z zew serwera
batman
Adminów męczę od godziny winksmiley.jpg
wlamywacz
Batman a o shellu nie słyszałeś ? Pisz nawet do admina żeby on to zrobił.
batman
Cytat
Batman a o shellu nie słyszałeś ? Pisz nawet do admina żeby on to zrobił.
A co ma admin robić? Czekać aż ktoś uploaduje plik, a następnie go ręcznie przenieść?

Poza tym instaluje się właśnie wget. Udało się chociaż tyle wywalczyć winksmiley.jpg Niemniej jednak problem pozostał. Wget to tylko jego obejście.
zimi
Cytat
Cytat
Zaglądałeś do php.ini?

Nawet nie wiem czego mam szukać.

może to głupie co napiszę biggrin.gif:P ale ja szukałbym '51200', '50 K', '50k' i podobnych kombinacji
batman
Cytat
może to głupie co napiszę
Masz rację to było głupie smile.gif Rozmiar był pierwszą rzeczą jakiej szukałem.
dr_bonzo
A dla wszystkich plikow tak to sie zachowuje?
batman
Sprawdzałem tylko pliki doc i txt. W obu przypadkach obcinało plik.
kaem
Zobacz w php.ini linijkę : "upload_max_filesize", która określa maksymalny możliwy rozmiar wysyłanego(czy odbieranego ? sam nie wiem) pliku. Może to coś pomoże.
dr_bonzo
kaem: nawet nie wiesz o czym mowisz
kaem
dr_bonzo: może to nie to, ale wydawało mi się, że może pomóc. Ja dopiero się uczę. A ty jak chcesz coś napisać to pisz konkretnie zamiast nabijać sobie posty.
webdice
Spróbuj jeszcze wysłać dane postem (symulując formularz).
batman
@kaem
upload_max_filesize jest do zupełnie innej rzeczy.

@webdicepl
Danych nie wysyłam postem między serwerami. Po prostu używam wymienionych wcześniej funkcji. Użycie posta w tym przypadku nie będzie rozwiązaniem problemu, a jego obejściem.
wlamywacz
Batman to nie wiem ale jeśli php nie podoła to może jakiś klient ftp wywoływany z exec lub system ?
batman
@wlamywacz
Napiszę jeszcze raz. Nie chodzi mi o obejście problemu, bo to już zrobiłem przy pomocy wgeta. Chodzi mi o rozwiązanie tego problemu.
sanchoo
@wlamywacz po exec??

http://pl2.php.net/ftp nie wystaczy??
wrzasq
sprobuj samemu socketami pobierac i zobacz, czy pokazuja sie jakies bledy polaczenia, albo jak wygladja naglowki i koncowka. i czy po pobraniu 51200 bajtow na prawde jest EOF.

@kaem: jesli sie uczysz, to nie wypowiadaj sie, bo zle i niesprawdzone rady moga jedynie zaszkodzic. skoro sie uczysz to sie ucz, a nie wymadrzaj.
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.