Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Interakcja z systemem plików PHP i serwerem
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Interakcja z systemem plików PHP i serwerem
Technologie webowe

Interakcja z systemem plików PHP i serwerem

WebInside.pl
Ostatnia aktualizacja: 28.03.2004
WebInside.pl
Udostępnij
Udostępnij

W tym artykule postaram się opisać pełną interakcję systemem plików oraz serwerem, która jest niezbędna każdemu programiście PHP, który myśli poważnie o dobrym i poprawnym pisaniu swoich skryptów.

Zawartość
Funkcje katalogoweInterakcja z plikami znajdującymi się na serwerzeUruchamianie poleceń na serwerzeInterakcja ze środowiskiem

Na interakcje z systemem plików i serwerem składają się:
•
•
• funkcje katalogowe
• interakcja z plikami znajdującymi się na serwerze
• uruchamianie poleceń na serwerze
• stosowanie zmiennych środowiskowych serwera

Ponieważ dwa pierwsze zagadnienia zostały omówione już wcześniej w naszym serwisie, zalecam lekturę tych zagadnień, natomiast my zajmiemy się w tym artykule pozostałymi czteroma.

Funkcje katalogowe

Często w naszych skryptach potrzebne jest listowanie danego katalogu w celu np. wybrania odpowiadającej nam ikonki do newsa. Na początku katalog ten musimy najpierw otworzyć, do tego celu służy funkcja opendir(), która jako parametr pobiera ścieżkę do katalogu, a zwraca natomiast uchwyt katalogu, podobnie do funkcji fopen(), która zwraca uchwyt pliku.
Kiedy katalog zostanie już otwarty można pobrać nazwy plików poprzez wywołanie funkcji readdir(), która jako parametr pobiera uchwyt katalogu. Funkcja ta zwraca false jeśli wszystkie pliki zostaną odczytane. Funkcję readdir() możemy zatem umieścić w pętli, aby wylistować cały katalog. Po zakończeniu odczytu z katalogu należy go zamknąć za pomocą funkcji closedir(). Poniższy skrypt przedstawia listowanie przykładowego katalogu:

<?php
$opdir = opendir(„images/”);
while($file = readdir($opdir)){
echo $file.”
„;
}
closedir($opdir);
?>

Jak pewnie zauważyliście wyświetliły się też dwa pliki: „.” i „..” nie są to w prawdzie pliki lecz katalogi. Aby ich nie wyświetlać należy w pętli umieścić odpowiedni warunek.

Język skryptowy PHP posiada funkcje, które „wycinają” fragmenty ścieżek dirname() – katalogową, basename() – plikową. Może to być w niektórych skryptach spore udogodnienie. W PHP znajdziemy też funkcję, które zwrócą nam ilość wolnego miejsca oraz ilość miejsca całkowitego. Obie funkcję zwracają liczbę w bajtach. A więc można obliczyć np. procent zajmowanego miejsca. Jeżeli chcesz zobaczyć jak napisać taki skrypt, zapraszam do

W PHP nie tylko jesteśmy skazani na „podziwianie” zawartości katalogów. Możemy także je tworzyć i usuwać. Rzeczą oczywistą jet, że możemy jedynie tworzyć i usuwać katalogi do których nasz skrypt ma dostęp.
W celu stworzenia nowego katalogu, należy użyć polecenia mkdir(), znanego pewnie niektórym z powłoki BASH. Funkcja mkdir() pobiera dwa parametry pierwszy to ścieżka bezwzględna zawierająca nazwę nowego katalogu oraz jako drugi uprawnienia tego katalogu, czyli tzw. chmod. Chmod podajemy w formie liczby ósemkowej czyli po prostu poprzedzamy uprawnienia zerem.

<?php
mkdir(„C:usrusersnowy_user”, 0777);
?>

Pewnie niektórych zdziwi fakt, iż utworzony katalog nie ma wcale chmodu 777 tylko np. 755, spowodowane jest to wartością umask, czyli wartość jaką należy odjąć od podanych uprawnień, aby otrzymać uprawnienia końcowe. Możliwa jest zmiana parametru umask przed stworzeniem katalogu. Funkcja umask zmienia jego wartość na wpisany argument i zwraca starą wartość umask.
Aby usunąć katalog w PHP należy użyć funkcji rmdir(), która pobiera jako parametr ścieżkę bezwzględną do katalogu. Przy usuwaniu katalogu musi on być pusty!

<?php
rmdir(„C:\usrusernowy_user”);
?>

Ciekawostką jest, że PHP nie umożliwia zmiany nazwy katalogu. Można to jednak wykonać w inny sposób. Opis tej czynności przedstawiam w tym .

Interakcja z plikami znajdującymi się na serwerze

PHP udostępnia wiele funkcji, dzięki którym możemy otrzymywać informację na temat plików na serwerze. Poniżej w tabelce przedstawię przydatne funkcję dotyczące otrzymywania informacji o plikach wraz z opisami.

Nazwa funkcji Opis
fileatime() Zwraca znacznik czasu unixa ostatniego otwarcia pliku.
filemtime() Zwraca znacznik czasu unixa ostatniej modyfikacji pliku.
fileowner() Zwraca identyfikator użytkownika tego pliku, który może zostać później przetworzony. Opis poniżej tabelki
filegroup() Zwraca identyfikator grupy tego pliku, który może zostać później przetworzony. Opis poniżej tabelki
fileperms() Zwraca uprawnienia pliku w systemie dziesiętnym.
filetype() Zwraca typ pliku. Możliwe wartości to: file, link, dir, unknown, block, char, fifo
filesize() Zwraca wielkość pliku w bajtach.
is_dir() Sprawdza czy plik jest katalogiem.
is_executable() Sprawdza czy plik jest wykonywalny.
is_file() Sprawdza czy plik jest plikiem
is_link() Sprawdza czy plik jest linkiem/skrótem
is_readable() Sprawdza czy plik jest do odczytu
is_writable() Sprawdza czy plik jest do zapisu

Teraz trochę wyjaśnień. Wszystkie funkcje opisane powyżej pobierają ścieżkę do pliku. Funkcje fileatime() i filemtime() zwracają znacznik czasu unixa, czyli liczbę sekund od 1 lipca 1970, możemy w funkcji date() ustawić format daty i jako drugi parametr podać właśnie znacznik czasu unixa. Przykładowy kod zwracający datę ostatniego otwarcia wygląda następująco:

<?php
echo date(„d-m-Y”, fileatime(„/home/costam/plik.tam”));
?>

Następne dwie funkcje zwracają odpowiednio identyfikator użytkownika pliku oraz identyfikator grupy pliku. Oba identyfikatory możemy przekonwertować za pomocą funkcji posix_getpwuid() i posix_getgrgid() odpowiednio dla użytkownika i grupy. Funkcje te zwracają tablicę asocjacyjną zawierające informację o użytkowniku i grupie w tym ich nazwy. Funkcje typu is_ zwracają true jeżeli plik jest danym typem, lub false jeżeli nie.
Oprócz zestawu funkcji przedstawionych powyżej istnieją funkcje, które zwracają tablicę tych danych. Przykładami takich funkcji są stat() i jej uboższa wersja lstat().
Funkcje sprawdzające właściwości pliku pożerają bardzo dużo pamięci podczas trwania tego procesu. Aby wyczyścić bufor pamięci podręcznej należy użyć funkcji clearstatcache(), która usunie poprzednie wyniki z pamięci.

Właściwości plików możemy także modyfikować. Funkcje te dotyczą przeważnie uprawnień.
Funkcje opisane poniżej są odpowiednikami funkcji z systemów Unixowych, zatem nie będą działały w systemach Windows. Funkcja chgrp() zmienia grupę pliku. Może być stosowana do zmiany grupy na grupę, której członkiem jest aktualny użytkownik. Opisana funkcja pobiera jako pierwszy argument ścieżkę do pliku, a jako drugi nazwę grupy.
Funkcja chmod() służy do zmiany uprawnień pliku. Pobiera ona ścieżkę do pliku oraz uprawnienia poprzedzone 0, aby wskazać, że posiadają one format ósemkowy.
Funkcja chown() jest stosowana w celu zmiany właściciela pliku. Może ona być wykorzystana wówczas, gdy skrypt posiada uprawnienia użytkownika root, co ze względu bezpieczeństwa nie powinno się nigdy zdarzyć.

Za pomocą PHP możemy zmienić czas ostatniej modyfikacji pliku. Służy do tego celu funkcja touch(), która pobiera jako pierwszy parametr ścieżkę do pliku. Natomiast drugi parametr jest opcjonalny, należy w nim podać znacznik czasu unixa ostatniej modyfikacji. Jeżeli nie podamy drugiego parametru, czas ostatniej modyfikacji zostanie zmieniony na aktualny. Natomiast jeśli plik nie istnieje to zostanie on utworzony.
Aby usunąć plik znajdujący się na serwerze należy użyć funkcji unlink(), która pobiera jako parametr ścieżkę do pliku. Trzeba wspomnieć, że funkcja o nazwie delete nie istnieje, co jest utrudnieniem dla młodych programistów. Aby skopiować plik należy użyć polecenia copy() gdzie jako pierwszy parametr podajemy ścieżkę źródłową, a jako drugi ścieżkę przeznaczenia.
Ciekawostką jest fakt, że funkcja rename() w niektórych systemach zamiast zmieniać nazwę pliku, również go kopiuje. Prototyp funkcji jest taki sam jak prototyp funkcji copy.

Uruchamianie poleceń na serwerze

Istnieją cztery sposoby uruchamiania poleceń na serwerze:
Pierwsza z nich to funkcja exec(), której jako podstawowy parametr przekazujemy polecenie systemowe. Na przykład poniższy kod spowoduje wylistowanie bieżącego katalogu.

<?php
exec(„ls –la”);
?>

Drugim sposobem jest użycie funkcji passthru(), która zwraca bezpośrednio wynik do przeglądarki, jednak nie zwraca ona żadnej wartości. Parametry są identyczne jak w przypadku funkcji exec(). Trzecim sposobem jest użycie funkcji system(), zwraca ona wynik polecenia w przeglądarce. Parametry są identyczne jak w przypadku wcześniejszych funkcji.
Ostatnim sposobem jest użycie odwróconych apostrofów „ między które umieszczamy polecenia. Sposób ten nie wyświetla bezpośredniego wyniku. Wynik wykonania jest zwracany jako ciąg, który może zostać wyświetlony lub mogą być wykonywane na nim dowolne operacje. Jeżeli częścią polecenia mają być dane przekazane przez użytkownika, należy zabezpieczyć się przed zagrożeniami z tym idącymi. Funkcja escapeshellcmd(), uniemożliwia złośliwe wykonywanie poleceń w systemie. Funkcje należy wykonać w następujący sposób:

<?php
exec(escapeshellcmd(„polecenie użytkownika”));
?>

Interakcja ze środowiskiem

Zmienne środowiskowe inaczej zmienne serwera zwracają nam bardzo przydatne dane jak np: adres IP odwiedzającego, URL strony poprzedniej i wiele innych. Możemy do nich uzyskać dostęp za pomocą odwołania do specjalnej tablicy $_SERVER[] lub za pomocą polecenia getenv(); Na przykład, aby pobrać wspomniany adres IP należy użyć: $_SERVER[REMOTE_ADDR] lub getenv(„REMOTE_ADDR”);
Samo odczytywanie zmiennych środowiskowych jest już wielkim udogodnieniem, na pewno jeszcze większym jest fakt iż możemy je modyfikować. Służy do tego funkcja putenv();
W której podajemy jako parametr nazwe_zmiennej=wartość_zmiennej, np: putenv(„HOME=/home/krzasz”);

Tak dobrnęliśmy do końca tego obszernego tematu dotyczącego interakcji z systemem plików i serwerem. Jeżeli czegoś nie zrozumiałeś zadaj pytanie na naszym . Życzę powodzenia w pracy z plikami.

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2004-03-28 2004-03-28
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Zabezpieczanie stron przed nieuczciwymi klientami
Następny artykuł Informatyzacja szansą
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?