Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Pobieranie plików i otwieranie ich (cURL)
Forum PHP.pl > Forum > PHP
cielos
Witam, mam 2 pytania:
1. Czy za pomocą skryptu php mogę ściągnąć plik na serwer z innego serwera? Nie mogę tego pliku otworzyć w skrypcie za pomocą funkcji file, fopen itp. Najprawdopodobniej ma chmody tak ustawione. Czy pomimo tego da się ten plik ściągnąć? Przez przeglądarkę, wpisując link mogę go ściągnąć bez problemu.
2. Czy jest jakiś limit w php na wielkość otwieranego pliku za pomocą funkcji file lub gzfile i czy da się go zmienić?

Serwer na którym skrypty są wywoływane ma wyłączony tryb safe mode.
Pozdrawiam
GrayHat
http://php.net/fsockopen
http://php.net/fgets
cielos
Ok, ale jak wpisuje do robie funkcje fsockopen jako uchwyt do pliku i chce go odczytać to nie idzie. Jak mam to zrobić, żeby odczytać ten plik, albo ściągnąć go? Co mam dokładniej wpisać?
netmare
Jeśli możesz zmienić konfigurację serwera, to możesz sobie włączyć allow_url_fopen = On w php.ini.
Jak nie to poczytaj o cURL.
Jeśli nie ma cURL, robisz fsockopen, wysłasz zapytanie HTTP, a następnie odczytujesz odpowiedź.
cielos
Czy da się za pomocą cURL otworzyć plik w postaci tabeli?
Do konfiguracji serwera nie mam dostępu.
nowotny
Cytat(cielos @ 18.02.2008, 14:53:24 ) *
Czy da się za pomocą cURL otworzyć plik w postaci tabeli?

Nie rozumiem pytania... co masz na myśli poprzez "plik w postaci tabeli"...?
cielos
Chce otworzyć/zapisać ten plik w postaci tabeli, czyli tak jak się otwiera plik za pomocą file()
nowotny
Możesz wczytać zawartość do stringa i potem zrobić explode po znakach nowej linii... będziesz miał plik w tablicy...
cielos
Niby też prawda smile.gif Tylko, że ja pierwszy raz widzę tą funkcje cURL. Pomógłbś mi napisać funkcje odczytującą zawartość pliku z serwera?
nowotny
Cytat(cielos @ 18.02.2008, 19:48:24 ) *
Niby też prawda smile.gif Tylko, że ja pierwszy raz widzę tą funkcje cURL. Pomógłbś mi napisać funkcje odczytującą zawartość pliku z serwera?

A co...? manuala i google zamknęli...? :/

Bierzesz funkcję curl_init" title="Zobacz w manualu PHP" target="_manual, ustawiasz odpowiednie opcje połączenia za pomocą curl_setopt" title="Zobacz w manualu PHP" target="_manual i wynik curl_exec" title="Zobacz w manualu PHP" target="_manuala zapisujesz do zmiennej... i masz całą stronę w stringu...
cielos
Czy to działa również przy otwieraniu plików tekstowych?
nowotny
Jejq... to sobie sprawdź... cURL działa prawie tak jakby to była taka wirtualna przeglądarka... jak wpiszesz sobie dany adres w przeglądarce to po podaniu tego samego adresu w cURLu otrzymasz takie same wyniki...
cielos
No więc zacząłem próby z cURL, ale nie wychodzi mi to za bardzo.
Ściągnąłem gotowy skrypt z manuala:
  1. <?php
  2. $ch = curl_init("http://serwer/plik.txt");
  3. $fp = fopen("example_homepage.txt", "w");
  4. curl_setopt($ch, CURLOPT_FILE, $fp);
  5. curl_setopt($ch, CURLOPT_HEADER, 0);
  6. curl_exec($ch);
  7. curl_close($ch);
  8. fclose($fp);
  9. ?>

Po uruchomieniu wyskakuje mi: "Błąd #7: couldn't connect to host
Gdy wpisuje adres tego pliku w przeglądarce to otwiera mi się bez problemu.
nowotny
http://serwer/plik.txt to jest twój localhost czy jakiś plik na serwerze w internecie...?
cielos
Plik na serwerze w internecie. Na serwerze innym niż znajduje się strona.
nowotny
No to prawdopodobnie musisz jeszcze wysłać jakieś nagłówki... ewentualnie sprawdź sobie jaki konkretnie błąd wyskakuje za pomocą curl_error" title="Zobacz w manualu PHP" target="_manual lub curl_errno" title="Zobacz w manualu PHP" target="_manual...

Może być też tak że twój serwer nie pozwala na nawiązywanie połączeń, ale ja nie znam się na tyle na apachu...
cielos
Zapomniałem tego wstawić na forum ale w skrypcie mam linijkę z curl_errno i z curl_error i właśnie wyskakuje to co napisałem.
nowotny
No to jak możesz to podaj adres do tego pliku... sprawdzimy... inaczej musisz sam kombinować...
cielos
http://pl1.plemiona.pl/map/ally.txt
nowotny
Ten kod co podałeś wcześniej u mnie działa bez problemu na localhoście... Testowałeś na serwerze czy u siebie na localhoście...? Jak na serwerze to najprawdopodobniej coś masz zablokowane...
cielos
U mnie na localhoscie wyskakuje, ze funkcja jest zablokowana - mam EasyPHP i widocznie nie ma tego wgranego. Na serwie (cba.pl) nie wyskakuje mi cos takiego, tylko to ten błąd. Wiem, że na serwie jest wyłączona dyrektywa allow_url_fopen czy jakoś tak smile.gif To przez to może się tak "walić" ?
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.