Utfør skallkommando i PHP ved hjelp av exec

Utfør skallkommando i PHP ved hjelp av exec

PHP -skriptet brukes hovedsakelig til å utvikle webapplikasjoner, men det kan brukes til andre formål også. PHP har noen innebygde funksjoner for å utføre systemrelaterte kommandoer. exec () er en av dem. Det brukes til å utføre skallkommandoer eller et hvilket som helst program fra PHP -skriptet. Hvordan denne funksjonen kan brukes i PHP vises i denne opplæringen.

Syntaks:

String exec (String $ Command [, Array & $ output [, int & $ return_var]])

Denne funksjonen kan ta tre argumenter. Det første argumentet er obligatorisk som vil ta systemkommandoen. De to andre argumentene er valgfrie. Det andre argumentet brukes til å lagre output fra kommandoen i en matrise. Det tredje argumentet for denne funksjonen brukes til å lagre returstatusen til den utførte kommandoen. Denne funksjonen returnerer den siste linjen fra den utførte kommandoproduksjonen.

Eksempel-1: Bruk av exec () -funksjon uten valgfrie argumenter

Den grunnleggende bruken av Exec () -funksjonen har vist i denne opplæringen. Lag en PHP -fil med følgende skript for å vite hvordan Exec () -funksjonen returnerer kommandoproduksjonen. 'PWD'Kommando har brukt i den første exec () -kommandoen over skriptet som returnerer en utgangslinje. 'ls -la'Kommando har blitt brukt i kommandoen for andre exec () som kan returnere flere utdatilinjer. Hvis noen kommando returnerer flere linjer, vil utdataene vise den siste linjen som utdata.

// lagre utdataene fra den utførte kommandoen
$ output1 = exec ('pwd');
// Skriv ut returverdien
ekko $ output1;
ekko "
";
// lagre den siste linjen i den utførte kommandoen
$ output2 = exec ('ls -la');
// Skriv ut returverdien
ekko $ output2;
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet ovenfor fra serveren. 'PWD'Kommando returnerer gjeldende arbeidskatalog som utdata som vises i den første utgangen. 'ls -la'Kommando returnerer detaljene informasjon om listen over kataloger, og den andre utgangen viser den siste linjen fra kommandoutgangen.

Eksempel-2: Skriv ut alle verdiene for den utførte kommandoen

I forrige eksempel brukes ikke noe valgfritt argument i Exec () -funksjonen. Følgende eksempel viser bruk av valgfrie argumenter fra Exec () -funksjonen. Opprett en PHP -fil med følgende skript. To valgfrie argumenter for exec () brukes i dette skriptet. 'ls -l'Kommando brukes i det første argumentet som returnerer listen over kataloger. $ utgang Variabel brukes her for å lagre utdataene fra kommandoen i en matrise. $ Status Variabel brukes til å lagre returstatusverdien til den utførte kommandoen. Utgangen fra kommandoen vil bli skrevet ut som en matrise, og hver verdi av output -matrisen vil bli skrevet ut ved å bruke 'for' -sløyfen.

// lagre utdataene fra den utførte kommandoen i en matrise
exec ('ls -l', $ output, $ status);
// Skriv ut alle returverdier for den utførte kommandoen som matrise
print_r ($ output);
ekko "
";
// Skriv ut utgangen fra den utførte kommandoen i hver linje
foreach ($ output som $ verdi)

ekko $ verdi.""
";

// Skriv ut returstatusen til den utførte kommandoen
ekko $ status;
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet ovenfor fra serveren. Utgangen viser matrisen som inneholder utgangen fra kommandoen, 'ls -l' og hver verdi av matrisen i hver linje.

Eksempel-3: Skriv ut alle PHP-filer i den gjeldende katalogen

Følgende eksempel viser listen over alle PHP -filer i den gjeldende katalogen ved å bruke Exec () -funksjonen. Her, 'ls -l *.PHP'Kommando brukes her for å finne ut listen over alle PHP -filer i den gjeldende katalogen.

 Tag brukes i skriptet for å skrive ut innholdet i matrisen med det strukturerte formatet.

// lagre utdataene fra den utførte kommandoen i en matrise
exec ('ls -l *.php ', $ output);
// Skriv ut utgangen fra den utførte kommandoen
ekko "
";
print_r ($ output);
ekko "
";
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet ovenfor fra serveren.

Eksempel-4: Kjør et bashskript

Hvordan ethvert bash -skript kan utføres ved bruk av Exec () -funksjonen har vist i dette eksemplet. Lag en bash -fil som heter Løkke.sh med følgende skript som vil skrive ut alle jevnt tall fra 1 til 20.

Løkke.sh

#!/bin/bash

#Initialiser telleren

teller = 1
#Interate sløyfen til $ tellerverdien er mindre enn eller lik 20

mens [$ counter -LE 20]
gjøre
#Trykk de jevnnumre

if [[$ counter%2 -eq 0]]
deretter
#Print $ teller uten newline

ekko "$ teller"
fi
#Increment $ teller med 1

((teller ++))
Ferdig

Lag en PHP -fil med følgende skript for å kjøre bashskriptet. 'bash loop.sh'brukes som det første argumentet for exec () -funksjonen som vil utføre Løkke.sh skriptfil. 'for hver'Loop brukes til å skrive ut hver verdi av $ utgang med plass.

// Kjør Bash -skriptet
exec ('bash loop.sh ', $ output);
ekko "Alle til og med tall innen 1-20 er:
";
// Skriv ut Ourput ved hjelp av loop
foreach ($ output som $ verdi)

ekko $ verdi."";

?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet ovenfor fra serveren. Utgangen viser alle jevnt tall innen 1 til 20.

Eksempel-5: Kjør 'Dir' -kommando ved hjelp av Exec () -funksjon

'dir' -kommando fungerer som 'ls' -kommandoen. Følgende eksempel viser hvordan 'Dir' -kommandoen kan utføres ved hjelp av et PHP -skript. Opprett en PHP -fil med følgende skript som lagrer utdataene fra 'Dir' -kommandoen i matrisen som heter $ utgang og statusverdien i den navngitte variabelen $ Retur. var_dump () funksjon brukes her til å skrive ut strukturen til $ utgang matrise med informasjon om datatype.

// Kjør 'Dir' -kommando
exec ("dir", $ output, $ return);
// Skriv ut returstatusverdien
ekko "Returverdien til" Dir "-kommandoen er $ return \ n";
ekko "
";
// Skriv ut kommandoutgangen
var_dump ($ output);
ekko "
";
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet ovenfor fra serveren.

Konklusjon:

Ulike bruksområder av Exec () -funksjonen er blitt forklart i denne opplæringen for å hjelpe PHP -koderne til å kjenne måten å utføre Shell -kommandoen ved å bruke PHP -skriptet. Noen andre funksjoner eksisterer også i PHP for å gjøre samme type oppgave.