Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wczytanie pliku do tablicy
Forum PHP.pl > Forum > Przedszkole
gosc
Witam,

chciałem wczytać do tablicy zdalny plik tekstowy aby móc go potem obrobić i napotkałem problem,
do w/ pliku mam dostęp w postaci:

- w przegladarce po wpisaniu file://///10.134.xx.xxx/param/plik.txt
- poprzez start/uruchom po pisaniu \\10.134.xx.xxx\param\plik.txt

próbowałem tak jak poniżej ale dostaję komunikat : "failed to open stream: No such file or directory"
rozumiem że źle zaadresowałem scieżkę, czy mógłby mnie ktoś naprowadzić?

  1. <?php
  2.  
  3. $plik= file('\\\\10.134.xx.xxx\\param\\plik.txt');
  4. foreach($plik as $line)
  5. {
  6. echo($line);
  7. }
  8.  
  9. ?>
!*!
Dostęp do pliku możliwy jest tylko z poziomu serwera, a nie poza obszarem jego działania, np. pulpitu. A jeśli 10.134.xx.xxx to Twoje IP...

  1. $plik= file('10.134.xx.xxx\param\plik.txt');
  2. //albo jeszcze lepiej
  3. $plik= file('10.134.xx.xxx/param/plik.txt');
  4. //ewentualnie ścieżka bezwzględna
  5. $plik= file('./param/plik.txt');
bostaf
Cytat(!*! @ 11.10.2012, 15:54:03 ) *
Dostęp do pliku możliwy jest tylko z poziomu serwera, a nie poza obszarem jego działania

Czyli to nie działa?
  1. $a = file('http://php.net/file');
  2. $b = file('c:/windows/system.ini');
  3. $c = fopen('http://php.net/fopen', 'r');
  4. $d = file_get_contents('http://php.net/file_get_contents');
  5. $e = parse_ini_file('c:/windows/system.ini');

? ;)
Gość
Tak jak wspomniałem jest to plik ze zdalnej maszyny testowej działającej pod kontrolą systemu Unix.
Oczywiście mógłbym go wpierw kopiować na dysk lokalny ale chciałbym o ile jest taka możliwość obrabiać go właśnie na niej.

Rozumiem, że nie ma prostej metody na wykonanie powyższego?
!*!
Cytat(bostaf @ 11.10.2012, 22:57:09 ) *
Czyli to nie działa?
  1. $a = file('http://php.net/file');
  2. $b = file('c:/windows/system.ini');
  3. $c = fopen('http://php.net/fopen', 'r');
  4. $d = file_get_contents('http://php.net/file_get_contents');
  5. $e = parse_ini_file('c:/windows/system.ini');

? wink.gif


Jeśli pobiera Ci pliki z poza obszaru działania serwera, to znaczy że masz lukę w systemie. W innym wypadku pobierasz plik przez file_get_contents jednak problem odnosił się do poprawnej ścieżki.
bostaf
Cytat(Gość @ 12.10.2012, 08:15:08 ) *
Rozumiem, że nie ma prostej metody na wykonanie powyższego?

Kombinowałeś tak jak Ci podpowiedział @!*!? Jeszcze popróbuj z tymi ukośnikami i ukośnikami wstecznymi. Jeden system woli tak, drugi inaczej. A przed adresem serwera (10.134...) musisz sprecyzować protokół transferu, bo funkcja niekoniecznie jest taka bystra, żeby próbować to odgadywać:
  1. $plik= file('http://10.134.xx.xxx/param/plik.txt');


Cytat(!*! @ 11.10.2012, 15:54:03 ) *
  1. //ewentualnie ścieżka bezwzględna
  2. $plik= file('./param/plik.txt');

To jest ścieżka względna bo odwołuje się do pliku, z którego uruchamiana jest funkcja file(). "./" oznacza "szukaj w moim folderze".
Ścieżka bezwzględna rozpoczyna się od podania korzenia (c:\, d:\, /bin, /etc).


Cytat(!*! @ 12.10.2012, 09:32:36 ) *
Jeśli pobiera Ci pliki z poza obszaru działania serwera, to znaczy że masz lukę w systemie.

Słowo "luka " sugeruje niedopatrzenie. W moim przypadku możliwość pobierania plików zewnętrznych to świadome, zamierzone i kontrolowane nadanie uprawnień smile.gif
Poza tym, w pobieraniu nie ma nic złego. Gorzej, jeśli nieświadomie się udostępnia.
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.