fnmatch
fpassthru
Funkcje Systemu plików
PHP Manual

# fopen

(PHP 4, PHP 5)

fopen — Otwiera plik lub URL

### Opis

resource fopen ( string `$nazwa_pliku` , string `$tryb` [, bool `$użyj_include_path` [, resource `$kontekst` ]] )

fopen() wiąże nazwany zasób, określony przez `nazwa_pliku`, do strumienia.

### Parametry

`nazwa_pliku`

  Jeśli `nazwa_pliku` jest w postaci "schemat://...", to przypuszczalnie jest to URL i PHP szuka protokołu obsługi (także zwanego wrapper'em) dla tego schematu. Jeśli nie zarejestrowano żadnego wrapper'a dla tego protokołu, PHP wyemituje notatkę, aby pomóc Tobie w wyśledzeniu potencajalnego problemu w Twoim skrypcie następnie będzie kontynuować z podanym `nazwa_pliku` traktując go jako zwykły plik.

  Jeśli PHP zdecyduje, że `nazwa_pliku` określa lokalny plik, wtedy spróbuje otworzyć strumień na tym pliku. Plik musi być dostępny dla PHP, więc musisz zapewnić prawa dostępu do pliku pozwalające na taką operację. Jeśli masz włączone tryb bezpieczny lub open_basedir mogą mieć zastosowanie dodatkowe restrykcje.

  Jeśli PHP zdecyduje, że `nazwa_pliku` określa zarejestrowany protokół i ten protokół jest zarejestowany jako sieciowy URL, PHP sprawdzi allow_url_fopen czy jest włączone. Jeśli jest wyłączone (off), PHP wyświetli ostrzeżenie i wywołanie fopen zakończy się niepowodzeniem.

  > Informacja:

  > Listę obsługiwanych protokołów możesz znaleźć w Supported Protocols and Wrappers. Niektóre protokoły (również określane przez wrappery obsługują kontekst lub/i opcje php.ini. Odwołaj się do konkretnej strony protokołu aby uzyskać listę opcji jakie mogą zostać ustawione (np. php.ini wartość user_agent używana przez wrapper http).

  Na platformie Windows, dbaj aby wstawiać znaki ucieczki (escape) przed wszystkimi lewymi ukośnikami (backslash) użytymi w ścieżce do pliku lub używać ukośników (slash).

  `<?php
  $handle = fopen("c:\\data\\info.txt", "r");
  ?>`
`tryb`

  Parametr `tryb` określa rodzaj dostępu jaki wymagasz do strumienia. Może być dowolny z następujących:

  Lista możliwych trybów dla fopen() używając `tryb`
  `tryb` | Opis
  --- | ---
  'r' | Otwiera tylko do odczytu; umieszcza wskaźnik pliku na jego początku.
  'r+' | Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku.
  'w' | Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.
  'w+' | Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.
  'a' | Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
  'a+' | Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
  'x' | Tworzy i otwiera plik tylko do zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik juz istnieje, wywołanie fopen() nie powiedzie się, zwróci `FALSE` i wygeneruje błąd na poziomie `E_WARNING`. Jeśli plik nie istnieje, spróbuje go utworzyć. To jest równoważne z określeniem flag O_EXCL|O_CREAT stosowanym w wywołaniu systemowym open(2).
  'x+' | Tworzy i otwiera plik odczytu i zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik juz istnieje, wywołanie fopen() nie powiedzie się, zwróci `FALSE` i wygeneruje błąd na poziomie `E_WARNING`. Jeśli plik nie istnieje, spróbuje go utworzyć. To jest równoważne z okresleniem flag O_EXCL|O_CREAT stosowanym w wywołaniu systemowym open(2).

  > Informacja:

  > Różne rodziny systemów operacyjnych stosuja rózne konwencje końca lini. Kiedy zapisujesz plik tekstowy i chcesz wstawić łamanie lini, musisz użyć poprawnych dla twojego systemu operacyjnego znak(ów) końca lini. Systemy bazujące na Uniksie używają \n jako znaku końca lini, systemy bazujące na Windowsie używają \r\n jako znaków końca lini, a systemy Macintosh używają \r jako znak końca lini.

  > Jeśli użyjesz nieprawidłowego końca lini do zapisu pliku, możesz zaobserwować, w innych aplikacjach otwierając ten plik, że "wygląda on zabawnie".

  > Windows oferuje flagę ('t') konwertującą tryb tekstowy, która przezroczyście przekłada \n na \r\n kiedy pracujesz z plikiem. Dla kontrastu, możesz także uzyć 'b' aby wymusić tryb binarny, wtedy nie będzie konwertować twoich danych. Aby użyć tych flag, wstaw 'b' lub 't' jako ostatni znak w parametrze `tryb`.

  > Domyślnie tryb konwersji zależy od SAPI i wersji PHP jakiej używasz, więc namawiamy aby zawsze podawać stosowną flage w celu przenośności. Powinieneś użyć trybu 't' jeśli pracujesz ze zwykłymi plikami tekstowymi (plain-text)i używasz \n do ograniczenia konców lini w twoim skrypcie, ale wymagasz aby twój plik był czytelny w aplikacjach takich jak notatnik. Powinieneś uzyć 'b' w każdym innym przypadku.

  > Jeśli nie podasz flagi 'b' kiedy pracujesz na binarnych plikach, możesz doświadczyć dziwnych problemów z twoimi danymi, włączając uszkodzone pliki graficzne i dziwne problemy ze znakami \r\n.

  > Informacja:

  > Dla przenośności, bardzo zalecane jest użycie zawsze flagi 'b' kiedy otwierasz pliki za pomocą fopen().

  > Informacja:

  > Ponownie, dla przenośności, jest również bardzo zalecane abyś, przepisał swój kod, który używa lub polega na trybie 't' tak aby używał poprawnego końca lini oraz trybu 'b'.

`użyj_include_path`

  Opcjonalny trzeci parametr `użyj_include_path` może być ustawiony na '1' lub `TRUE` jeśli chcesz szukać pliku także w include_path.

`kontekst`

  > Informacja: Obsługa kontekstów została dodana w PHP 5.0.0. Opis kontekstów znajduje się w rozdziale Stream Funkcje.

### Zwracane wartości

Zwraca wskaźnik pliku do zasobu w przypadku sukcesu lub `FALSE` przy błędzie.

### Błędy/Wyjątki

Jeśli otwieranie się nie powiedzie, funkcja wygeneruje błąd na poziomie `E_WARNING`. Możesz użyć @ aby zatuszować to ostrzeżenie.

### Rejestr zmian

Wersja | Opis
--- | ---
4.3.2 | Od PHP 4.3.2 domyślny tryb ustawiany jest na binarny, dla wszystkich platform, które rozróżniają tryby binarne i tekstowe. Jeśli masz problemy ze skryptem po aktualizacji, spróbuj użyć flagi 't' jako obejście dopóki nie uczynisz Twojego skryptu bardziej przenośnym jak opisano niżej.
4.3.2 | Dodano opcje 'x' i 'x+'

### Przykłady

Przykład #1 fopen() przykłady

`<?php
$handle = fopen("/home/rasmus/plik.txt", "r");
$handle = fopen("/home/rasmus/plik.gif", "wb");
$handle = fopen("http://www.przyklad.com/", "r");
$handle = fopen("ftp://uzytkownik:haslo@przyklad.com/jakisplik.txt", "w");
?>`

### Notatki

Ostrzeżenie

Nawiązując połączenie przez SSL, serwer Microsoft IIS narusza reguły protokołu przez zamknięcie połączenia bez wysłania wskaźnika close_notify. Po przesłaniu całości danych PHP zgłosi to jako "SSL: Fatal Protocol Error". Aby obejść ten błąd, wystarczy obniżyć poziom raportowania błędów error_reporting, tak aby nie były wyświetlane ostrzeżenia. PHP 4.3.7 i nowsze wersje same wykrywają błąd serwera IIS przy otwieraniu strumienia https:// i za pomocą nakładki i pomijają ostrzeżenia. Używając funkcji fsockopen() do otwarcia gniazda ssl:// programista sam musi zadbać o wyłączenie ostrzeżeń.

> Informacja: Gdy włączony jest tryb bezpieczny, PHP sprawdza czy katalog, na którym zostaną wykonane operacje, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.

Jeśli doświadczasz problemów z odczytem lub zapisywaniem do plików i używasz PHP w postaci modułu serwera, pamiętaj, żeby się upewnić, że pliki i katalogi, których używasz są dostępne dla procesu serwera.

### Zobacz też:

- Supported Protocols and Wrappers
- fclose() - Zamyka otwarty wskaźnik pliku
- fgets() - Pobiera linię ze wskaźnika pliku
- fread() - Odczyt pliku binarnie bezpieczy
- fwrite() - Zapis pliku binarnie bezpieczny
- fsockopen() - Open Internet or Unix domain socket connection
- file() - Czyta całą zawartość pliku do tablicy
- file_exists() - Sprawdza czy plik lub katalog istnieje
- is_readable() - Tells whether a file exists and is readable
- stream_set_timeout() - Set timeout period on a stream
- popen() - Otwiera wskaźnik pliku do procesu
- stream_context_create() - Creates a stream context

fnmatch
fpassthru
Funkcje Systemu plików
PHP Manual