Uprawnienia Aby skrypt PHP mógł
odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są
zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie, jak
użytkownik który go umieścił. Może też mieć uprawnienia użytkownika nobody
- wtedy żeby móc ze skryptu zmodyfikować jakiś plik, trzeba nadać prawo
zapisu wszystkim użytkownikom. Dokładne inforacje na ten temat powinien
dostarczyć administrator serwera na którym umieszczamy skrypty. Otwieranie plików Przed wykonaniem jakiejkolwiek operacji na pliku, należy go otworzyć. Służy do tego funkcja fopen. Pobiera ona 2 argumenty: pierwszy to nazwa pliku który chcemy otworzyć. Drugi parametr może mieć następujące wartości:
Co ciekawe,
funkcja fopen może otworzyć plik na innym serwerze przez protokół http
(tylko odczyt), lub ftp (odczyt lub zapis, ale nie jednocześnie). fopen
zwraca liczbę, która służy do identyfikowania otwartego pliku.
Przykład:
Po zakończeniu
operacji na pliku, należy go zamknąć funkcją fclose, np:
Odczyt z pliku Jest kilka
funkcji służących do odczytu z pliku. Zacznę może od funkcji fgetc -
odczytuje ona 1 znak z pliku:
Jeśli funkcja napotka
koniec pliku, zwróci wartość FALSE. Po odczytaniu znaku, pozycja w pliku
jest przesuwana o 1 do przodu. Dzięki temu, po kolejnym wywołaniu funkcji
getc otrzymamy kolejny znak, a nie jeszcze raz ten sam. Kolejną funkcją
jest funkcja fgets:
Drugi parametr
określa ile znaków funkcja może odczytać. Trzecią funkcją do odczytu z
pliku jest fread. Działa ona podobnie do fgets, z tym że nie przerywa
czytania gdy natrafi na znak nowej lini. Zapis do pliku Do zapisywania w pliku służy funkcja fwrite:
Funkcja ta zapisuje
tekst podany jako 2 parametr do pliku identyfikowanego przez $file. 3
parametr jest opcjonalny i określa maksymalną długość tekstu, jaka może
zostać zapisana. Jest jeszcze funkcja fputs, ale działa ona dokładnie tak
samo. W PHP często występują identyczne funkcje pod innymi nazwami -
ułatwia to życie osobom przyzwyczajonym do innych języków. Blokowanie plików Jak dotąd
wszystko wydaje się proste. Co jednak stanie się, jeżeli jednocześnie
zostaną uruchomione dwie kopie skryptu, i obie będą próbowały zmienić ten
sam plik? Sytuacja taka jak łatwo się domyślić, może miec przykre
konsekwencje. Aby rozwiązać ten problem należy użyć blokowania plików.
Służy do tego funkcja flock:
Pierwszy argument
funkcji flock to identyfikator otwartego pliku. Argument mode określa typ
dostępu, jaki chcemy uzyskać. Może mieć następujące wartości:
Jeżeli chcemy uzyskać dostęp do
zapisu, najpierw wszystkie inne blokady muszą być zwolnione. Do uzyskania
dostępu do odczytu wystarczy, ze plik nie będzie zablokowany do zapisu - w
ten sposób wiele skryptów może jednocześnie czytać z pliku, ale tylko
jeden może do niego zapisywać. Dodatkowo w trakcie zapisu żaden inny
skrypt nie może odczytywać z pliku - dzięki temu nie natrafi na
niekompletne dane.
Inne funkcje PHP zawiera wiele funkcji służących do obsługi plików. Oto niektóre z nich:
Prosty licznik tekstowy Licznik tekstowy posłuży jako praktyczny przykład wykorzystania dostępu do plików:
Ten skrypt odczytuje z pliku wartość, zwiększa ją o 1, a następnie wyświetla na stronie. Jeżeli plik counter.n nie istnieje, skrypt spróbuje go utworzyć. Ten licznik zwiększy się za każdym razem gry użytkownik wejdzie na stronę, lub ją odświeży. |