Funkcja fopen() w PHP

Definicja i użycie

Funkcja fopen() otwiera plik lub URL.

Jeśli otwarcie zakończy się niepowodzeniem, funkcja ta zwróci FALSE.

Gramatyka

fopen(nazwa_pliku,mode,include_path,kontekst)
Parametry Opis
nazwa_pliku Wymagane. Określa plik lub URL do otwarcia.
mode Wymagane. Określa typ dostępu do pliku lub strumienia. Możliwe wartości można znaleźć w tabeli poniżej.
include_path Opcjonalnie. Jeśli również chcesz wyszukiwać pliki w include_path, ustaw ten parametr na 1 lub TRUE.
kontekst Opcjonalnie. Określa środowisko pliku. Context to zestaw opcji, które mogą zmieniać zachowanie strumienia.

Możliwe wartości parametru mode

mode opisuje
"r" Otwórz w trybie tylko do odczytu, ustaw wskaźnik pliku na początku pliku.
"r+" Otwórz w trybie odczytu i zapisu, ustaw wskaźnik pliku na początku pliku.
"w" Otwórz w trybie zapisu, ustaw wskaźnik pliku na początku pliku i skróć rozmiar pliku do zera. Jeśli plik nie istnieje, spróbuj go utworzyć.
"w+" Otwórz w trybie odczytu i zapisu, ustaw wskaźnik pliku na początku pliku i skróć rozmiar pliku do zera. Jeśli plik nie istnieje, spróbuj go utworzyć.
"a" Otwórz w trybie zapisu, ustaw wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje, spróbuj go utworzyć.
"a+" Otwórz w trybie odczytu i zapisu, ustaw wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje, spróbuj go utworzyć.
"x"

Otwórz i otocz w trybie zapisu, ustaw wskaźnik pliku na początku pliku. Jeśli plik już istnieje, wywołanie fopen() zakończy się niepowodzeniem i zwróci FALSE, a zostanie wygenerowany komunikat błędu na poziomie E_WARNING. Jeśli plik nie istnieje, spróbuj go utworzyć.

jest to ekwiwalentne z użyciem znacznika O_EXCL|O_CREAT dla systemowego wywołania open(2).

ten opcja jest wspierany przez PHP 4.3.2 i późniejsze wersje i może być używany tylko dla lokalnych plików.

"x+"

tworzy i otwiera plik w trybie odczytu i zapisu, przesuwając wskaźnik pliku do początku pliku. Jeśli plik już istnieje, wywołanie fopen() kończy się niepowodzeniem i zwraca FALSE, a także generuje komunikat o błędzie na poziomie E_WARNING. Jeśli plik nie istnieje, próbuje go utworzyć.

jest to ekwiwalentne z użyciem znacznika O_EXCL|O_CREAT dla systemowego wywołania open(2).

ten opcja jest wspierany przez PHP 4.3.2 i późniejsze wersje i może być używany tylko dla lokalnych plików.

opisuje

fopen() będzie nazwa_pliku określona nazwa zasobu przypisana do strumienia. Jeśli nazwa_pliku jest "scheme://...jeśli format jest w formacie "", traktowany jest jako URL, PHP szuka procesora protokołu (znany również jako protokół wewnątrz) do przetwarzania tego formatu. Jeśli protokół nie jest zarejestrowany jako protokół wewnątrz, PHP wydaje wiadomość, aby pomóc w sprawdzeniu potencjalnych problemów w skrypcie. nazwa_pliku kontynuować jako zwykła nazwa pliku.

jeśli PHP uważa nazwa_pliku określa lokalny plik, próbuje otworzyć strumień w tym pliku. Plik musi być dostępny dla PHP, więc należy potwierdzić, że uprawnienia do dostępu do pliku pozwalają na ten dostęp. Jeśli jest aktywowany tryb bezpieczny lub open_basedir, będą zastosowane dodatkowe ograniczenia.

jeśli PHP uważa nazwa_pliku określa zarejestrowany protokół, który został zarejestrowany jako URL sieciowy, PHP sprawdza i potwierdza, czy allow_url_fopen został aktywowany. Jeśli jest wyłączony, PHP wydaje ostrzeżenie, a wywołanie fopen kończy się niepowodzeniem.

dotyczy kontekst obsługiwane są od PHP 5.0.0.

Informacje i komentarze

Komentarz:Różne rodziny systemów operacyjnych mają różne zwyczaje kończenia wierszy. Kiedy zapisuje się plik tekstowy i chcemy wstawić nowy wiersz, należy użyć znaku końca wiersza zgodnego z systemem operacyjnym. Systemy oparte na Unixie używają \n jako znaku końca wiersza, systemy oparte na Windowsie używają \r\n, a systemy oparte na Macintoshu używają \r. Jeśli podczas zapisywania do pliku użyje się błędnego znaku końca wiersza, inne aplikacje mogą zachowywać się dziwnie, gdy otwierają te pliki.

Pod Windowsem dostępny jest znak konwersji tekstu ("t"), który przetwarza \n na \r\n w sposób przejrzysty. W przeciwieństwie do tego, można również użyć "b", aby wymusić binarny tryb, w którym dane nie są przetwarzane. Aby użyć tych znaczników, należy użyć "b" lub "t" jako ostatniego znaku parametru mode.

Domyślny tryb konwersji zależy od SAPI i wersji PHP, więc w celu ułatwienia przenośności zaleca się zawsze określać odpowiedni znacznik. Jeśli operuje się na plikach tekstowych i w skrypcie używa się \n jako znaku końca wiersza, ale oczekuje się, że te pliki będą czytane przez inne aplikacje, takie jak Notepad, w modele używa się "t". W wszystkich innych przypadkach używa się "b".

W przypadku operacji na plikach binarnych, jeśli nie określono znacznika "b", może się napotkać na różne dziwne problemy, w tym uszkodzone pliki graficzne oraz dziwne problemy dotyczące znaków \r\n.

Komentarz:Z myślą o przenośności,强烈建议在用 fopen() 打开文件时总是使用 "b" znacznik.

Komentarz:Ponownie, z myślą o przenośności,强烈建议你重写那些依赖于 "t" 模式的代码使其使用正确的行结束符并改成 "b" 模式。

Przykład

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>