Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wczytanie pliku do tablicy, problem z poprawnym wskazaniem pliku żródłowego
-gosc-
post
Post #1





Goście







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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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');
Go to the top of the page
+Quote Post
bostaf
post
Post #3





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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 to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







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?
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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');

? (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
bostaf
post
Post #6





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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ń (IMG:style_emoticons/default/smile.gif)
Poza tym, w pobieraniu nie ma nic złego. Gorzej, jeśli nieświadomie się udostępnia.

Ten post edytował bostaf 12.10.2012, 19:07:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 22:41