Utilizarea functiilor pentru executarea comenzilor shell

Post Title

Este posibil ca cineva sau jobul sa va ceara o intersectie intre partea web si sitemul de operare, de exemplu sa listati un director din linia de comanda si nu din script php, pentru asta php pune la dipozitie cateva functii si un operator. Ca sa nu mai lungesc vorba si sa trec la exmplu mai jos o sa prezint aceste functii:

 

       1.Functia exec() , prototipul acesteia este

  1.  
  2. string exec ( string $command [, array &$output [, int &$return_var ]] )

 

Functia nu furnizeaza o iesire directa, ci stocheaza intr-un array liniile primite la executarea comenzii.

  1.  
  2. <?php
  3. exec('dir',$rez);
  4. echo '<pre>'. var_export($rez,true).'</pre>';
  5. ?>

 

Iar rezultatul poate fi asemnator cu

  1.  
  2. 0 => ' Volume in drive C has no label.',
  3. 1 => ' Volume Serial Number is 78C0-1039',
  4. 2 => '',
  5. 3 => ' Directory of C:\\xampp\\htdocs\\tutoriale',
  6. 4 => '',
  7. 5 => '04/08/2012 08:27 PM.',
  8. 6 => '04/08/2012 08:27 PM..',
  9. 7 => '04/08/2012 08:27 PM 257 index.php',
  10. 8 => '04/05/2012 09:02 PM nbproject',
  11. 9 => ' 1 File(s) 257 bytes',
  12. 10 => ' 3 Dir(s) 18,511,237,120 bytes free', )

 

2.Functia passthru() , prototipul acesteia este

 

  1.  
  2. void passthru ( string $command [, int &$return_var ]

 

Spre deosebire de functia exec aceasta functie furnizeaza o iesire directa in browser, nu este recomandat sa o folositi daca iesirea va fi in format binar deoarece nu va afisa nimic:

  1.  
  2. <?php
  3. passthru ('echo $PATH'); //output /usr/local/bin:/usr/bin:/bin
  4. ?>

 

3.Functia system() este identica cu functia system din C  si are urmatorul prototip

  1.  
  2. string system ( string $command [, int &$return_var ] )

 

Functia system se aseamana cu functia passthru prin faptul ca furnizeaza iesirea directa in browse, dar goleste iesirea dupa fiecare linie, retureaza ultima linie a iesiri in caz de succes iar false in caz contrar.

  1.  
  2. <?php
  3. system('ls'); //output-ul config.php config.php~ index.php nbproject
  4. ?>

 

4. Operatorul backticks ( accent grav, e pe aceeasi tasta cu tilda ~)

 

Nu furnizeaza o iesire directa in browser, ci returneaza un sir cu rezultatul comenzi.

  1.  
  2. <?php
  3. //setam variabila care va prelua ls
  4. $comanda=`ls`;
  5. //afisam tipul variabilei, sa ne convingem ca e string
  6. echo gettype($comanda);
  7. //afisam pe linie noua
  8. echo '<br>';
  9. //afisam rezultatul comenzii
  10. echo $comanda;
  11. ?>
  12.  

Rezultatul afisat in browser va fi :

  1.  
  2. string
  3. config.php config.php~ index.php nbproject

 

Autor articol

Ştiinţa fără religie este şchioapă, religia fără ştiinţă este oarbă (Albert Einstein)

Acest articol nu este comentat, fii primul care o face

Trebuie sa fii logat sa poti lasa un comentariu Autentificare Inregistrare Logare cu Facebook
top