Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt nie chce odczytać pliku z folderu
Forum PHP.pl > Forum > Przedszkole
adrian266
Witam, aktualnie przerabiam książkę 'PHP i MySQL, Tworzenie stron Vademecum profesjonalisty wyd IV ' Hellion. Jestem przy trzecim rozdziale, w ktorym jest mowa o operacjach na pikach, tj, wczytywanie,zapis itp. operacje na plikach. Problem pojawia sie w tym skrypcie:

  1. <?php
  2. // utworzenie krótkich nazw zmiennych
  3. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  4.  
  5. $zamowienia = file("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt");
  6. $ilosc_zamowien = count($zamowienia);
  7. if ($ilosc_zamowien == 0) {
  8. echo "<p><strong>Brak zamówień.
  9. Proszę spróbować później.</strong></p>";
  10. }
  11.  
  12. for ($i=0; $i < $ilosc_zamowien; $i++) {
  13. echo $zamowienia[$i]."<br />";
  14. }
  15. ?>


Przy wykonywaniu tego skryptu pojawia mi się alert:

  1. [PHP]Warning: file(D:/WampServer/wamp/www//../zamowienia/zamowienia.txt) [function.file]: failed to open stream: No such file or directory in D:\WampServer\wamp\www\zobaczzamowienia.php on line 5
[/PHP]

Skrypt nie moze wczytać danych z pliku, ktory jest umiweszczony gdzieś głebiej. W przypadku gdy znajduje się w głównym folderze serwera problem ten nie występuje. Niestety, samemu nie udało mi sie dojść co jest przyczyna.
motyl-pl
spróbuj na jakimś darmowym hostingu z php smile.gif
Bo możliwa:
1. Zła konfiguracja wampa
2. Komunikat wskazuje na błędną ścieżkę do pliku

Kod
   1.
      [PHP]Warning: file(D:/WampServer/wamp/www//../zamowienia/zamowienia.txt) [function.file]: failed to open stream: No such file or directory in D:\WampServer\wamp\www\zobaczzamowienia.php on line 5


failed to open stream: No such file or directory in D:\WampServer\wamp\www\zobaczzamowienia.php on line 5 - nie możliwe otwarcie.. nie ma podanego pliku z wersetu 5 w danym źródle smile.gif
AdIoS_Neo
  1. <?php
  2. // utworzenie krótkich nazw zmiennych
  3. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  4.  
  5. $zamowienia = file("../zamowienia/zamowienia.txt");
  6. $ilosc_zamowien = count($zamowienia);
  7. if ($ilosc_zamowien == 0) {
  8. echo "<p><strong>Brak zamówień.
  9. Proszę spróbować później.</strong></p>";
  10. }
  11.  
  12. for ($i=0; $i < $ilosc_zamowien; $i++) {
  13. echo $zamowienia[$i]."<br />";
  14. }
  15. ?>
mortus
Komunikat wyraźnie wskazuje, że ścieżka do pliku jest nieprawidłowa. Jeżeli plik zamowienia.txt znajduje się w tym samym katalogu co skrypt, to w linii 5 kod powinien wyglądać tak
  1. $zamowienia = file("zamowienia.txt");
Zapis ten jest równoważny z
  1. $zamowienia = file("./zamowienia.txt");
Zmienna $_SERVER['DOCUMENT_ROOT'] wskazuje na główny katalog serwera (zazwyczaj htdocs). Dwie kropki (..) w ścieżce do pliku wskazują katalog wyżej. Gdzie jest zatem twój plik zamowienia.txt?
luck
Lub ewentualnie
  1. $zamowienia = file("./zamowienia/zamowienia.txt");
Wszystko zależy od tego, jak jest położony plik zamowienia.TXT względem pliku zamowienia.PHP. W powyższej linijce możesz też wpisać bezpośrednią, pełną ścieżkę do pliku, czyli "D:/WampServer/wamp/.....". Zwróć tylko uwagę na ukośniki w ścieżce: albo "/", albo "\\".
Edit. Chyba długo to pisałem, bo posta kolegi wyżej jeszcze nie było winksmiley.jpg
batman
Jeśli chcesz odczytać plik, którego ścieżka zawiera przejście do katalogu wyżej (..), skorzystaj z funkcji realpath.
adrian266
Cytat(mortus @ 7.04.2010, 08:05:59 ) *
Komunikat wyraźnie wskazuje, że ścieżka do pliku jest nieprawidłowa. Jeżeli plik zamowienia.txt znajduje się w tym samym katalogu co skrypt, to w linii 5 kod powinien wyglądać tak
  1. $zamowienia = file("zamowienia.txt");
Zapis ten jest równoważny z
  1. $zamowienia = file("./zamowienia.txt");
Zmienna $_SERVER['DOCUMENT_ROOT'] wskazuje na główny katalog serwera (zazwyczaj htdocs). Dwie kropki (..) w ścieżce do pliku wskazują katalog wyżej. Gdzie jest zatem twój plik zamowienia.txt?


Plik 'zobaczzamowienia.php' znajduje się w głównym katalogu, a "zamówienia.txt w folderze 'zamowienia'.
Błąd polegał na tych nieszczęsnych dwóch kropkach , które zauważyłeś.

  1. $zamowienia = file("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt");

Nie zrozumiałem intencji autora i sądziłem , ze te kropki to jakiś element php, w strukturze katalogów , który musi tam być.

Dziękuje wszystkim za pomoc- problem rozwiązany.

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.