Skrypty PHP jako skrypty powłoki
Skrypty powłoki są to skrypty interpretowane podczas uruchamiania, wykonujące pewne czynności. W systemach Unix czy Linux skrypty te są bardzo często wykorzystywane. W systemach Windows też są czasem używane, są to proste skrypty zwane Batch Files
Co to są skrypty powłoki ?
Najprostszym językiem mówiąc, są to skrypty interpretowane podczas uruchamiania, wykonujące pewne czynności. W systemach Unix czy Linux skrypty te są bardzo często wykorzystywane. W systemach Windows też są czasem używane, są to proste skrypty zwane Batch Files (pliki bat). Dają one jednak znacznie mniej możlowiści niż skrypty pisane w systemach klasy *nix (zwane także skryptami shella). W czym można pisać takie skrypty. Najczęściej pisze się je używając albo czystych komend powłoki, wtedy interpretuje je interpreter sh, albo używając powłoki/interpretera bash (lub innej - tsh, csh). Często spotyka się także skrypty w Perlu, a coraz częściej w Pythonie. Nie wiele osób jednak wie, że takie skrypty można tworzyć także w PHP.
Jak tworzyć skrypty shella w PHP?
Skrypty powłoki nie różnią się zasadniczo składnią od zwykłych skryptów w PHP. Jedyną różnicą jest to, że uruchamiane są one z innymi prawami i w innym środowisku. Szczególnie pamiętać o tym należy w systemach *nix, gdyż zwracają one większą uwagę na prawa wykonywania niż systemy Microsoftu. W systemie Linux (a także unix i podobych) warto dodać jedną linijkę tekstu na samym początku, która określa miejsce parsera PHP.
#!/usr/bin/php -q
Dzięki temu po nadaniu skryptowi praw wykonywalności możeby go uruchamiać jak każdy program, nie martwiąc się o podanie skryptu do interpretera. Jeśli nie chcemy nadać skryptowi praw wykonania lub pracujemy w systemie Windows, jedynym sposobem jest uruchomienie interpretera php podając skrypt jako parametr. (Najlepiej w takim przypadku dodać ścieżkę interpretera - php.exe lub php-cgi.exe w zależności od wersji - do zmiennej środowiskowej PATH).
#php -q skrypt.php
Jak pewnie każdy zauważył, przekazuje także do parsera parametr -q. Parametr ten wymusza uruchomienie cichego trybu. Gdybyśmy uruchomili skrypt be parametru wyświetlony zostałby nagłówek PHP, który w zalezności od wersji może wyglądać tak:
Content-type: text/html X-Powered-By: PHP/5.0.3
Tworzymy skrypt
Stwórzmy teraz prosty skrypt, który pokaże, że w wyświetlaniu tekstu nie ma żadnej różnicy. Skrypt typu helloworld, wyświetli tekst "Witaj swiecie" i zakończy swoje działanie.
#!/usr/bin/php -q
![]()
echo "Witaj swiecien";
![]()
Skrypty te dają duże możliwości, ale co byłoby jeśli chcielibyśmy aby użytkownik mógł wpisać jakieś dane? Oczywiście w skryptach PHP możemy także korzystać ze standardowego wejścia, jak i wyjścia błędów. Ponższy przykład demonstruje jego wykorzystanie.
#!/usr/bin/php -q
<?php
//Stworzenie strumienia odpowiadającego za czytanie ze standardowego wejścia
$in = fopen('php://stdin','r');
echo 'Jak sie nazywasz?'."n";
//Pobranie linii ze standardowego wejścia
$line = fgets($in,1024);
echo 'Milo mi cię poznac, '.$line."nn";
//Zamknięcie strumienia
fclose($in);
![]()
//Otwarcie strumienia odpowiadającego za pisanie na standardowe wyjście błędów
$err = fopen('php://stderr','w');
//Wypisanie błędu
fwrite($err, 'Uwaga, nie znana osoba'."n");
//Zamknięcie strumienia
fclose($err);
![]()
Jak widać na strumieniach wejścia/wyjścia możemy działać tak samo jak na plikach. Standardowo jest jeszcze oczywiście strumień stdout, odpowiedzialny za standardowe wyjście, jednak użycie funkcji echo jest szybsze i nie ma konieczności tworzenia strumienia. Jak łatwo się domyślić ze stdin możemy tylko czytać, a na strumienie stdout i stderr tylko pisać.
Zakończenie
Skrypty pisane w PHP mogą się także przydać w naszej codziennej pracy. Mogą automatycznie wyszukiwać śmieci i usuwać je (jeśli mają uprawnienia). Możliwości wykorzystania skryptów w PHP jest mnóstwo. Myśle, że każdy z czytelników ma już wiele pomysłów jak może sobie uprościć życie używając skryptów powłoki napisanych w PHP.










