Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem fopen
Forum PHP.pl > Forum > Przedszkole
Jed113
Witam! Jestem początkujący w tematyce php, może ktoś mi wyjaśnić co to za błąd i jak to naprawić ?
Warning: fopen(C:/xampp/htdocs/../zamowienie.txt) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\przeglad.php on line 20
bastard13
Podałeś złą ścieżkę do pliku.
Jed113
Ale dobra jest, podawałem też bezpośrednią i to samo, jakieś inne pomysły ?
bastard13
Wklej ten kawałek kodu tutaj.
Jed113
<?php
$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];


$plik = fopen("$DOCUMENT_ROOT/../zamowienie.txt", 'rb');












?>
naitsabes
Po co zmienna ? Jeżeli robisz strone lub cos to i tak znasz katalogi winksmiley.jpg A bez zmiennej może byc wszystko dobrze...
Jed113
bez document_root ? wybaczcie , ale zaczęłem dopiero kilka dni temu .
naitsabes
tak smile.gif po prostu daj sobie np.

  1. $plik = fopen("tomek/dane/blalba/zamowienie.txt", 'rb');
Jed113
$plik =fopen("xampp/htdocs/zamowienie.txt", 'rb'); tak dałem bo to w tym katalogu jest i to samo.
bastard13
  1. $plik =fopen("../zamowienie.txt", 'rb');

1) Ścieżkę względną podaje się zaczynając od folderu, w którym wywołujesz skrypt.
2) Po drugie:
  1. $plik = fopen("$DOCUMENT_ROOT/zamowienie.txt", 'rb');

niepotrzebne '../'
3) używaj bbcode
Jed113
Korzystam z książki helionu php i mqsql i tam właśnie wykorzystują tą zmienną ($DOCUMENT_ROOT), czyli jaki kod ma być ostatecznie aby zadziałał ?
bastard13
A próbowałeś powyższe? Np. pierwszy lub drugi? lub:
  1. $plik = fopen($_SERVER['DOCUMENT_ROOT'].'/zamowienie.txt', 'rb');
Jed113
$plik = fopen($_SERVER['DOCUMENT_ROOT'].'/zamowienie.txt', 'rb');
jak wstawiam to, nie pokazuje nic , strona pusta.
bastard13
Pewnie biały ekran, jak zgaduje. To powiem ci, że wszystko działa, bo w innym wyrzuciłoby błąd.
A teraz przeczytaj:
http://php.net/manual/pl/function.fopen.php
i pomyśl dlaczego masz pusty ekran. Podpowiem, że przede wszystkim powinieneś zwrócić uwagę na to co zwraca funkcja fopen() i co się z tym dalej robi.
Jed113
okej winksmiley.jpg , wielkie dzięki za odpowiedzi, Pozdrawiam winksmiley.jpg

$wp = fopen('$DOCUMENT_ROOT/../zamowienie.txt', 'rb');

echo $wp;
jak daje to to wyświetla mi resource id#3

a kiedy dodaje do tego wiersz $wp=fread($wp, 300)
to wyświetla mi tylko do 300 znaku i wszystko w tym samym wierszu mimo że w pliku txt jest w osobnych.
bastard13
Cytat
echo $wp;
jak daje to to wyświetla mi resource id#3

A co zwraca funkcja fopen()?

Cytat
a kiedy dodaje do tego wiersz $wp=fread($wp, 300)
to wyświetla mi tylko do 300 znaku

Co określa drugi parametr przekazany do funkcji fread()?

Cytat
wszystko w tym samym wierszu mimo że w pliku txt jest w osobnych.

Jaka jest różnica między łamaniem lini w pliku tekstowym, a pliku html?
Jed113
drugi parametr to ilość bajtów, łamanie lini w html w windows to /r/n wszystko jest w porządeczku, a co zwraca funkcja fopen to się domyśle, jest to plik tekstowy z zapisanym zamówieniem z innego skryptu, to chyba nie ma znaczenia ?

okej już mam
pomogło fgets czyli odczytywanie wiersz po wierszu
bastard13
1) tak.
2) nie. Zrób sobie plik test.html, a w nim:
  1. czy to będzie
  2. złamany tekst

i zobacz jak go wyświetli przeglądarka.
3)
Cytat
Zwraca wskaźnik pliku do zasobu w przypadku sukcesu lub FALSE przy błędzie.
Jed113
$wp = fopen('$DOCUMENT_ROOT/../zamowienie.txt', 'rb');
$wp = fgets($wp,999);
echo $wp;

zrobiłem tak i wyświetla, lecz tylko pierwszy wiersz zamówienia
bastard13
Cytat
Korzystam z książki helionu php i mqsql

Przeczytaj rozdział do końca, bo nie wierzę, że tam nie ma tego wszystkiego, a później, jeżeli będziesz miał jeszcze jakieś pytania, to pisz.
Koniec końców forum to nie tutorial.
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.